データをファイルに出力する一種のキャッシュ マシン プログラムを作成しています (英語ではないことはわかっていますが、それは重要ではありません)。エラーが発生しています。
使おうとするPrintWriter
とうまくいかないのですが、その理由がわかりません。
public void writeFooter(List<Purchase> list) throws Exception{
int amountSold = 0;
int amountNotSold = 0;
int moneyRecieved = 0;
openStreams();
printer.println("Проданные товары: ");
for(int i = 0; i <= list.size() - 1;i++){
if(list.get(i).isSold()){
writeToFile(list.get(i), dir);
amountSold++;
moneyRecieved += list.get(i).getPrice();
}
}
printer.println();
printer.println("Не проданные товары: ");
for(int i = 0; i <= list.size() - 1; i ++){
if(!list.get(i).isSold()){
writeToFile(list.get(i), dir);
amountNotSold++;
}
}
printer.println();
printer.println("Всего: "+list.size());
printer.println("Кол-во проданно: "+ amountSold);
printer.println("Кол-во не проданно: "+ amountNotSold);
printer.println("Выручка: "+ moneyRecieved);
printer.flush();
System.out.print(printer.checkError());
closeStreams();
}
private void openStreams() throws IOException{
writer = new FileWriter(file,true);
buffer = new BufferedWriter(writer);
printer = new PrintWriter(buffer);
}
private void closeStreams() throws IOException{
printer.flush();
printer.close();
buffer.close();
writer.close();
}
public void writeToFile(Purchase purchase,String dir) throws Exception{
file = new File(dir);
if(!file.exists()){
file.createNewFile();
}
openStreams();
printer.println(purchase.getName() + " По цене: " + purchase.getPrice() + "руб");
closeStreams();
}
for ループは機能しますが、行は機能します。それは本当に私を混乱させます!checkError(
) を試してみたところtrue
、 が表示されましたが、それでも解決しません。
誰かが私が間違っていることを説明できますか?