Не понимаю, в чём проблема! Пробовал целиком перезаписывать файл и добавлять только последнюю строку.
package com.javarush.task.task18.task1827;
import java.io.*;
import java.util.ArrayList;
import java.util.Locale;
public class Table {
ArrayList<String> data = new ArrayList<>();
String filename;
public Table (String filename) throws Exception{ //переписываем содержимое файла в список строк
this.filename = filename;
FileInputStream inStream = new FileInputStream(filename);
BufferedReader fileReader = new BufferedReader(new InputStreamReader(inStream));
String line;
while ((line = fileReader.readLine()) != null) {
data.add(line);
}
inStream.close();
fileReader.close();
}
public void addEntry (String productname, String price, String quantity) throws Exception {
String id = String.valueOf(findMax()+1);
data.add(String.format(Locale.ENGLISH, "%-8.8s%-30.30s%-8.8s%-4.4s", id, productname, price, quantity));
writeDown();
}
public long findMax () { //получение максимального ID
long id = 0;
long tmp;
for (String line : data) {
tmp = Long.parseLong(line.substring(0, 8).trim());
if (id < tmp) id = tmp;
}
return id;
}
public void writeDown () throws Exception {
StringBuilder builder = new StringBuilder();
//for (String line : data) { //запись всего списка целиком
//builder.append(line);
//builder.append("\r\n");
//}
builder.append(data.get(data.size()-1));
if (!data.get(data.size()-1).endsWith("\r\n")) builder.append("\r\n");
BufferedWriter writer = new BufferedWriter(new FileWriter(filename, true));
writer.write(builder.toString());
writer.close();
}
}