当我在jGRASP中打开新写入的文件时,它包含许多文本行。 当我在记事本中打开相同的文本文件时,它包含一行具有相同数据的文本。 transFile只是我正在创build的文本文件名称的一个variables。
FileWriter f = new FileWriter(transFile, true); BufferedWriter out = new BufferedWriter(f); out.write(someOutput + "\n"); out.close(); f.close();
我已经改变了以下的代码,它解决了记事本中的问题。
out.write(someOutput + "\r\n");
为什么会这样呢?
\ r \ n是窗口回车,这是记事本将会识别的。 我建议获得Notepad ++,因为它只是好得多。
窗口的默认行分隔符(历史)是\r\n
。 Windows的“记事本”应用程序只识别该分隔符。
Java实际上知道它正在运行的系统的默认行分隔符,并通过系统属性line.separator
使其可用。 在你的代码中,你可以这样做:
... out.write(someOutput); out.newLine(); ...
newLine()
方法附加在该属性中定义的系统行分隔符。
你也可以这样做:
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(); } } }