Прежде всего, вы должны читать и / или записывать свои файлы с попыткой использования ресурсов, в целях безопасности, поскольку вы можете забыть закрыть файл, или даже исключение может помешать вам сделать это.
Оператор try-with-resources обеспечивает закрытие каждого ресурса в конце оператора.
- Учебные руководства по Java ™
Подробнее информация: https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
Как? Например, в том, что вы читаете, просто оберните его попыткой:
try (BufferedReader br = new BufferedReader(new FileReader("project.csv"))) {
// The while code here...
}
Также вы изменяете переменную finalResult
, но ничего не делаете с ней, так что ваши изменения просто хранится там и ничего больше, поэтому вы не видите свои изменения!
Вам нужно создать переменную вне l_1039 *, сохраняя все строки, как список. В противном случае вы можете открыть другой файл (например, project-output.csv ) и записать его во время чтения другого файла.
// Same principle as reading
try (BufferedWriter writer = new BufferedWriter(new FileWriter("project.csv"))) {
// Write the result
}
Этот ответ более подробно затрагивает тему написания: { ссылка }
Пример чтения-записи, я полагаю Java 8:
try (BufferedWriter writer = new BufferedWriter(new FileWriter("project-output.csv"))) {
try (BufferedReader reader = new BufferedReader(new FileReader("project.csv"))) {
String line;
while ((line = reader.readLine()) != null) {
String[] cols = line.split(",");
System.out.println("Please choose a criteria (2-7): ");
final int subjectToGiveMark = in.nextInt(); // for creativity is 2
System.out.println("Please enter a mark: ");
final int mark = in.nextInt(); // which mark should be given
cols[subjectToGiveMark] = Integer.toString(mark);
// Here is where you write the output:
writer.write(String.join(",", cols));
writer.newLine();
}
writer.flush();
}
}
Вы можете увидеть рабочий пример на repl.it https://repl.it/repls/ScaredSeriousCookie