Почему FileWriter не создает новую строку, как следует?ДЖАВА - PullRequest
0 голосов
/ 30 ноября 2018

Привет! Я посмотрел, как создать новую строку при добавлении в файл, который многие говорят использовать .write("\n"), прежде чем добавить файл, но это не работает или даже в конце вашего .write(), ноничего не работаетДругие говорят, что используют FileWriter fr = new FileWriter(file, true);, но это не работает.Есть ли что-то, что я делаю неправильно?

File does not create a new line

try {
    String fileName = JOptionPane.showInputDialog(null, "Please enter the student ID that this grade belongs to");
    FileWriter writer = new FileWriter("Grades\\"+ fileName +".txt");
    BufferedWriter bw = new BufferedWriter (writer);
    File file = new File("Activity Log\\Activity Log.txt");
    FileWriter fr = new FileWriter(file, true);
    fr.write("Grade for student " + fileName + " has been posted.");
    fr.close();
    jTextArea1.write(bw);
    bw.close();
    jTextArea1.setText("");
    jTextArea1.requestFocus();

    frmGrades.dispose();

    ProfessorAccount.main(null);
}
catch(Exception e1) {
    JOptionPane.showMessageDialog(null, e1);
}

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Окончания строк зависят от системы.Вам следует либо использовать класс более высокого уровня для записи в файл, либо отправить системное локальное окончание, например, так:

fr.write("Grade for student " + fileName + " has been posted." + System.lineSeparator());

\ n экранирует символ новой строки в большинстве вариантов Unix, но можетне работает на других машинах.

0 голосов
/ 30 ноября 2018

В Unix a \ n используется как новая строка, однако в Windows вам нужно \ r \ n, то есть два управляющих символа.

Многие редакторы справляются с любым из них, поэтому это не имеет значения, но Блокнот очень прости принимает только переводы строк Windows.

Один из способов гарантировать, что вы всегда пишете новую строку для конкретной платформы, - это обернуть FileWriter с помощью PrintWriter и использовать println

...