4

我在 Java Swing 中有一个 JTextArea 和一个提交按钮。需要将 textarea 的内容写入带有换行符的文件中。我得到了输出,它被写为文件中的一个字符串。

try {
    BufferedWriter fileOut = new BufferedWriter(new FileWriter("filename.txt")); 
    String myString1 =jTextArea1.getText();
    String myString2 = myString1.replace("\r", "\n");

    System.out.println(myString2);

    fileOut.write(myString2);
    fileOut.close();
} catch (IOException ioe) {
    ioe.printStackTrace();
}

请给我一些建议

4

4 回答 4

18

为什么不使用JTextArea' 内置write函数?

JTextArea area = ...
try (BufferedWriter fileOut = new BufferedWriter(new FileWriter(yourFile))) {
    area.write(fileOut);
}
于 2012-05-09T18:41:04.007 回答
2

将所有 \r 和 \n 替换为:

System.getProperty("line.separator")

这将使您的代码独立于平台,并在必要时将新行写入文件。

编辑:因为你使用 BufferedWriter,你也可以使用newLine() 方法

于 2012-05-09T18:37:34.527 回答
0

你为什么\r换成\n?

行分隔符应该是"\r\n".

于 2012-05-09T18:43:10.737 回答
0

这就是我想到的:

public void actionPerformed(ActionEvent event) {
BufferedWriter writer;
        try {
            writer = new BufferedWriter(new FileWriter("SimpleText.txt",
                    false));
            text.write(writer);
            writer.close();
            JOptionPane.showMessageDialog(null, "File has been saved","File Saved",JOptionPane.INFORMATION_MESSAGE);
            // true for rewrite, false for override

        } catch (IOException e) {
            JOptionPane.showMessageDialog(null, "Error Occured");
            e.printStackTrace();
        }
    }

希望这可以帮助

于 2014-03-05T02:02:52.107 回答