1

当我在 jGRASP 中打开新写入的文件时,它包含许多行文本。当我在记事本中打开相同的文本文件时,它包含一行具有相同数据的文本。transFile 只是我正在制作的文本文件名称的变量。

FileWriter f = new FileWriter(transFile, true);
BufferedWriter out = new BufferedWriter(f);
out.write(someOutput + "\n");
out.close();
f.close();

我已将代码更改为以下代码,并解决了记事本中的问题。

out.write(someOutput + "\r\n");

为什么会这样?

4

3 回答 3

2

\r\n 是 Windows 回车,这是记事本可以识别的。我建议使用 Notepad++,因为它要好得多。

于 2013-07-16T23:08:07.663 回答
1

你也可以这样做:

public void appendLineToFile(String filename, String someOutput) {        
    BufferedWriter bufferedWriter = null;        
    try {            
        //Construct the BufferedWriter object
        bufferedWriter = new BufferedWriter(new FileWriter(filename));            
        //Start writing to the output stream
        bufferedWriter.append( someOutput );
        bufferedWriter.newLine();
    } catch (FileNotFoundException ex) {
        ex.printStackTrace();
    } catch (IOException ex) {
        ex.printStackTrace();
    } finally {
        //Close the BufferedWriter
        try {
            if (bufferedWriter != null) {
                bufferedWriter.flush();
                bufferedWriter.close();
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}
于 2013-07-16T23:09:45.203 回答
1

Windows 的默认行分隔符(历史上)是\r\n. Windows“记事本”应用程序识别该分隔符。

Java 实际上知道运行它的系统的默认行分隔符,并通过系统属性使其可用line.separator。在您的代码中,您可以执行以下操作:

...
out.write(someOutput);
out.newLine();
...

newLine()方法附加该属性中定义的系统行分隔符。

于 2013-07-16T23:17:00.293 回答