【问题标题】:Why isn't the FileWriter not creating a new line like it should? JAVA为什么 FileWriter 没有像它应该的那样创建一个新行? JAVA
【发布时间】:2019-05-03 00:00:49
【问题描述】:

您好,我已经查看了如何在追加到文件时创建新行,许多人说在追加到文件之前使用 .write("\n"),但这不起作用,甚至在 .write() 的末尾也不起作用没有任何效果。其他人说要使用FileWriter fr = new FileWriter(file, true);,但这不起作用。是不是我做错了什么?

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);
}

【问题讨论】:

标签: java file text-files newline filewriter


【解决方案1】:

在 Unix 上,\n 用作换行符,但在 Windows 上,您需要 \r\n 即两个控制字符。

许多编辑器都会处理这两种情况,所以没关系,但记事本非常基本,只接受 Windows 换行符。

确保您始终编写特定于平台的新行的一种方法是使用 PrintWriter 包装 FileWriter 并使用 println

【讨论】:

  • 对不起,我忘了包括我也尝试过\r\n,但它没有用。除非我做错了……fr.write("Grade for student " + fileName + " has been posted." + "\r\n");
  • 彼得的建议可能是要走的路:PrintWriter pr = new PrintWriter(fr); pr.println("Grade for student " + fileName + " has been posted."); pr.close();
【解决方案2】:

行尾取决于系统。您应该使用更高级别的类来写入文件,或者发送系统本地结尾,例如:

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

\n 在大多数 Unix 变体中转义换行符,但可能不适用于其他机器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多