У меня есть текстовый файл в консоли, а затем напишите его обратно в него. Мне удалось прочитать файл на консоли, но когда я напишу его и попробую прочитать его в следующий раз, файл пуст. Может ли кто-нибудь сказать мне, где я ошибаюсь?Java Запись в текстовый файл
Вот код для чтения оригинального файла
public static ArrayList<Sales> readSaleData(ArrayList<Sales> sale) {
System.out.println();
ArrayList<Sales> sales = new ArrayList<Sales>();
Frame f = new Frame();
FileDialog saveBox = new FileDialog(f, "Reading text file", FileDialog.LOAD);
saveBox.setVisible(true);
String salePrice = saveBox.getFile();
String fileSavePlace = saveBox.getDirectory();
File inFile = new File(fileSavePlace + salePrice);
BufferedReader in = null;
try {
in = new BufferedReader(new FileReader(inFile));
String line;
int weekCount = 0;
while (((line = in.readLine()) != null)) {
weekCount++;
System.out.println("Week " + weekCount + "\t$" + line.replace(",", " $"));
String[] saleData = line.split(",");
for (String data : saleData) {
double price = Double.parseDouble(data);
Sales s = new Sales(price);
sales.add(s);
}
}
} catch (IOException io) {
System.out.println("There Was An Error Reading The File");
io.printStackTrace();
} finally {
try {
in.close();
} catch (Exception e) {
}
}
return sales;
}
И вот код для написания его в текстовый файл
public static void writeSaleToTextFile(ArrayList<Sales> s) {
Frame f = new Frame();
FileDialog foBox = new FileDialog(f, "Saving invoice information", FileDialog.SAVE);
foBox.setVisible(true);
String saleName = foBox.getFile();
String dirPath = foBox.getDirectory();
File outFile = new File(dirPath + saleName);
PrintWriter out = null;
try {
out = new PrintWriter(new BufferedWriter(new FileWriter(outFile)));
System.out.println("Going in");
for (int i = 0; i < s.size(); i++) {
Sales sale = s.get(i);
out.println(sale.toString());
System.out.println("This is the file size" + sale);
}
System.out.println("Coming Out");
}
catch (IOException io) {
System.out.println("An IO Exception occurred");
io.printStackTrace();
} finally {
try {
out.close();
} catch (Exception e) {
}
}
}
Вы получаете любой выход на консоль во время записи этого файла? Я имею в виду, что в вашем методе есть несколько вызовов System.out.println. Что вы получаете? – Seelenvirtuose
Вы не используете метод flush. Попробуйте и сообщите нам. –
@GD_Java - Но он >> является << вызовом 'close()', который будет делать флеш. –