在Java FileWriter中创建一个新行

时间:2013-08-31 15:28:59

标签: java io filewriter

我编写了以下FileWriter

try {
    FileWriter writer = new FileWriter(new File("file.txt"), false);

    String sizeX = jTextField1.getText();
    String sizeY = jTextField2.getText();
    writer.write(sizeX);
    writer.write(sizeY);

    writer.flush();
    writer.close();
} catch (IOException ex) {}

现在我想插入一个新行,就像你通常使用\n一样,但它似乎不起作用。

可以做些什么来解决这个问题?

谢谢。

9 个答案:

答案 0 :(得分:51)

如果您想获取当前操作系统中使用的新行字符,例如Windows \r\n,则可以通过

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

您还可以使用PrintStream及其println方法自动在字符串末尾添加操作系统相关的行分隔符

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

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

答案 1 :(得分:25)

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

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

答案 2 :(得分:6)

尝试将FileWriter包裹在BufferedWriter

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

BufferedWriter here的Javadocs。

答案 3 :(得分:4)

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

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

< / BLOCKQUOTE>

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

答案 4 :(得分:2)

尝试:

String.format("%n");

有关详细信息,请参阅this question

答案 5 :(得分:1)

如果您的意思是使用相同的代码,但添加一个新行,这样当您向文件添加内容时,它将在新行上。您可以简单地使用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");
}

答案 6 :(得分:0)

我会解决这个问题:

    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提供 可以作为解决方案吗?

答案 7 :(得分:0)

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

答案 8 :(得分:0)

可以使用 PrintWriter 来包装 FileWriter,因为它有许多其他有用的方法。

try(PrintWriter pw = new PrintWriter(new FileWriter(new File("file.txt"), false))){
   pw.println();//new line
   pw.print("text");//print without new line
   pw.println(10);//print with new line
   pw.printf("%2.f", 0.567);//print double to 2 decimal places (without new line)
}