Привет,
Помогите пожалуйста разобратся почему не записываются строки в файл в методе строки 24-30 ниже, вроде бы делаю все правильно, после каждого использования файла потоком, высвобождаю ресурс, но почему то на выходе файл пуст...
public static void updateList(String[] args, String file) {
ArrayList<String> tempbuffer = new ArrayList<>();
String updatedRecord = updateLine(args);
try {
BufferedReader br = new BufferedReader(new FileReader(file));
while (br.ready()) {
tempbuffer.add(br.readLine());
}
br.close();
} catch (Exception e) {
}
for (String s : tempbuffer) {
Integer oldIndex = Integer.parseInt(s.substring(0, 8).trim());
Integer newIndex = Integer.parseInt(args[1].trim());
if (oldIndex.equals(newIndex)) {
tempbuffer.set(tempbuffer.indexOf(s), updatedRecord);
}
}
try {
FileWriter cleaner = new FileWriter(file);
cleaner.write("");
cleaner.close();
BufferedWriter bw = new BufferedWriter(new FileWriter(file, true));
PrintWriter pw = new PrintWriter(bw);
for (String s : tempbuffer) {
System.out.println(s);
pw.println(s);
//bw.write(s);
}
} catch (Exception e) {
}
}
Полное решение если нужно:
package com.javarush.task.task18.task1828;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/*
Прайсы 2
*/
public class Solution {
public static void main(String[] args) {
BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
try {
String file = consoleReader.readLine();
//BufferedReader br = new BufferedReader(new FileReader(file));
//BufferedWriter bw = new BufferedWriter(new FileWriter(file, true));
if (!(args.length == 0)) {
if (args[0].equals("-u")) {
updateList(args, file);
}
/*if(args[0].equals("-d")){
deleteRecord(args, br, bw);
}*/
}
} catch (Exception e) {
}
}
//print args array and check what it contains
//C:\Users\vla9d\Desktop\Test\t1.txt
public static void updateList(String[] args, String file) {
ArrayList<String> tempbuffer = new ArrayList<>();
String updatedRecord = updateLine(args);
try {
BufferedReader br = new BufferedReader(new FileReader(file));
while (br.ready()) {
tempbuffer.add(br.readLine());
}
br.close();
} catch (Exception e) {
}
for (String s : tempbuffer) {
Integer oldIndex = Integer.parseInt(s.substring(0, 8).trim());
Integer newIndex = Integer.parseInt(args[1].trim());
if (oldIndex.equals(newIndex)) {
tempbuffer.set(tempbuffer.indexOf(s), updatedRecord);
}
}
try {
FileWriter cleaner = new FileWriter(file);
cleaner.write("");
cleaner.close();
BufferedWriter bw = new BufferedWriter(new FileWriter(file, true));
PrintWriter pw = new PrintWriter(bw);
for (String s : tempbuffer) {
System.out.println(s);
pw.println(s);
//bw.write(s);
}
} catch (Exception e) {
}
}
/* public static void deleteRecord(String[] args, BufferedReader br, BufferedWriter bw){
ArrayList<String> tempbuffer = new ArrayList<>();
try{
while (br.ready()){
tempbuffer.add(br.readLine());
}
}catch (Exception e){ }
tempbuffer.removeIf(s -> s.startsWith(args[1].substring(0, 8)));
try{
bw.write("");
PrintWriter pw = new PrintWriter(bw);
for(String s: tempbuffer){
pw.println(s);
}
}catch (Exception e){ }
}*/
public static String updateLine(String[] args) {
StringBuilder sb = new StringBuilder();
String id = updateRecord(args[1], 8);
String productName = updateRecord(args[2], 30);
String price = updateRecord(args[3], 8);
String quantity = updateRecord(args[4], 4);
sb.append(id);
sb.append(productName);
sb.append(price);
sb.append(quantity);
return sb.toString();
}
public static String updateRecord(String line, int length) {
StringBuilder sb = new StringBuilder();
String result;
if (line.length() > length) {
result = line.substring(0, length); //line.substring(0, length + 1);
} else {
sb.append(line);
while (sb.length() < length) {
sb.append(" ");
}
result = sb.toString();
}
return result;
}
}