用Java创建新行';s文件编写器

用Java创建新行';s文件编写器,java,io,filewriter,Java,Io,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();

我已经编写了以下
文件编写器

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) {}
BufferedWriter bw = new BufferedWriter(writer);
bw.newLine();
现在我想插入一个新行,就像您通常使用
\n
那样,但它似乎不起作用

如何解决这个问题

谢谢。

试试:

String.format("%n");

有关更多详细信息,请参阅。

尝试将
文件编写器
包装在
缓冲编写器
中:

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) {}
BufferedWriter bw = new BufferedWriter(writer);
bw.newLine();
BufferedWriter的Javadocs。

如果您想获取当前操作系统中使用的新行字符,如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 

(顺便说一句,System.out也是PrintStream的实例)。

尝试
System.getProperty(“line.separator”)


我会这样处理这个问题:

    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提供

可以作为解决方案吗?

如果您的意思是使用相同的代码,但添加新行,以便在文件中添加内容时,它将位于新行。您只需使用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");
}

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

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

Path java.nio.file.Files.write(路径路径、Iterable行、OpenOption…选项)引发IOException

如果追加到同一个文件,可能会对Files.write()使用追加标志

可以使用包装
文件编写器
,因为它还有许多其他有用的方法

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

writer.write(“\n”)
但它似乎不起作用
你能发布你得到的结果吗?如果我尝试“\n”方法,没有什么。。。只有1254个(12个代表sizeX,54个代表sizeY).@lukulus你能试试
writer.write(“\r\n”)
或更好的
writer.write(System.lineSeparator())
?不要将问题编辑为.Smart-one!为我工作,应该为任务工作。但是,对于一个项目,应该使用上述任何突出显示的方法,记事本不适用于
/n
,但写字板适用于
/n
。或者需要为记事本使用
line.separator
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)
}