Java:FileWriter:创建一个新行

我做了一个小文件作者:

try { FileWriter writer = new FileWriter(new File("file.txt"), false); try { String sizeX = jTextField1.getText(); String sizeY = jTextField2.getText(); writer.write(sizeX); writer.write(sizeY); writer.flush(); writer.close(); } catch (NumberFormatException e) { } } catch (IOException ex) { } 

现在我想创建一个新行,就像你可以正常使用“\ n”一样,但它似乎不起作用……

有谁知道如何制作这样一个新线?

提前致谢! 🙂

如果你想获得当前操作系统中使用的新行字符,比如\r\n for Windows,你可以通过它获取它们

  • System.getProperty("line.separator");
  • 自Java7 System.lineSeparator()
  • 或者如Stewart所述,通过String.format("%n");生成它们String.format("%n");

您还可以使用PrintStream及其println方法,该方法将自动在字符串末尾添加OS相关的行分隔符

 PrintStream fileStream = new PrintStream(new File("file.txt")); fileStream.println("your data"); // ^^^^^^^ will add OS line separator after data 

(BTW System.out也是PrintStream的实例)。

试试System.getProperty( "line.separator" )

  writer.write(System.getProperty( "line.separator" )); 

尝试在BufferedWriter包装FileWriter

 BufferedWriter bw = new BufferedWriter(writer); bw.newLine(); 

这里是BufferedWriter的Javadocs。

从1.8开始,我认为这可能是一个额外的解决方案,值得添加到响应中:

Path java.nio.file.Files.write(Path path,Iterable lines,OpenOption … options)抛出IOException

 StringBuilder sb = new StringBuilder(); sb.append(jTextField1.getText()); sb.append(jTextField2.getText()); sb.append(System.lineSeparator()); Files.write(Paths.get("file.txt"), sb.toString().getBytes()); 

如果附加到同一文件,也许使用带有Files.write()的附加标志

 Files.write(Paths.get("file.txt"), sb.toString().getBytes(), StandardOpenOption.APPEND); 

尝试:

 String.format("%n"); 

有关详细信息,请参阅此问题 。

如果你的意思是使用相同的代码,但添加一个新的行,这样当你向文件中添加一些东西时,它就会在一个新行上。 您可以简单地使用BufferedWriter的newLine()
在这里我也改进了你的代码:NumberFormatException是不必要的,因为没有任何东西被转换为数字数据类型,保存变量也使用过一次。

 try { BufferedWriter writer = new BufferedWriter(new FileWriter("file.txt")); writer.write(jTextField1.getText()); writer.write(jTextField2.getText()); writer.newLine(); writer.flush(); writer.close(); } catch (IOException ex) { System.out.println("File could not be created"); } 

我会解决这个问题:

  BufferedWriter output; output = new BufferedWriter(new FileWriter("file.txt", true)); String sizeX = jTextField1.getText(); String sizeY = jTextField2.getText(); output.append(sizeX); output.append(sizeY); output.newLine(); output.close(); 

FileWriter构造函数中的true允许追加。
方法newLine()由BufferedWriter提供
可以作为解决方案吗?

这里“\ n”也正常工作。 但这里的问题在于文本编辑器(可能是记事本)。 尝试使用Wordpad查看输出。