1

我在 TextArea 中有一些文本,我想将其保存在文件中,我的代码在这里:

private void SaveFile() {
    try {

        String content = txt.getText();

        File file = new File(filename);

        if (!file.exists()) {
            file.createNewFile();
        }

        FileWriter fw = new FileWriter(file.getAbsoluteFile());
        BufferedWriter bw = new BufferedWriter(fw);
        bw.write(content);
        bw.close();

    } catch (IOException e) {
        e.printStackTrace();
    }

}

但它在没有“\n”的情况下保存;在新文件中,一切都在一行上;我也能预见到那些“进入”吗?先感谢您

问题是因为记事本,所以这里是解决方案:

private void SaveFile() {
    try {

        String content = txt.getText();
        content = content.replaceAll("(?!\\r)\\n", "\r\n");

        File file = new File(filename);

        // if file doesnt exists, then create it
        if (!file.exists()) {
            file.createNewFile();
        }

        FileWriter fw = new FileWriter(file.getAbsoluteFile());
        BufferedWriter bw = new BufferedWriter(fw);
        bw.write(content);
        bw.close();

    } catch (IOException e) {
        e.printStackTrace();
    }

}

感谢您的帮助

4

5 回答 5

3

它应该工作。尝试使用显示行尾 \r 和 \n 的文本编辑器,看看会发生什么。

如果您想确保文本文件可以被 Windows 实用程序(如仅理解 的记事本)打开\r\n,您必须以这种方式自己对其进行规范化:

content = content.replaceAll("(?!\\r)\\n", "\r\n");

这将用序列替换所有\n前面没有 a的人。\r\r\n

于 2013-03-18T17:56:28.680 回答
2

您应该使用 Swing 文本组件提供的 read() 和 write() 方法。有关详细信息,请参阅文本和换行符

如果您希望输出包含特定的 EOL 字符串,则应在为文本组件创建 Document 后使用以下内容:

textComponent.getDocument().putProperty(DefaultEditorKit.EndOfLineStringProperty, "\r\n");
于 2013-03-18T18:38:25.650 回答
0

\ 字符转义下一个字符,正如您所说的 \n 将创建一个换行符。如果你想输出一个实际的\,你需要写:

"\n"

于 2013-03-18T17:51:28.363 回答
0

您可以使用 aPrintWriter将新行打印到文件。在扫描 TextArea 的文本时,如果 TextArea 的文本包含“\\n”,则使用 PrintWriter 的println() 方法,否则使用简单的print() !

于 2013-03-18T17:55:07.280 回答
0

你的 TextArea 的内容在一个字符串中。现在你可以在换行符处拆分它,然后你会得到你的 String[]。然后您可以迭代 String[] 数组并将其写入您的文件中:

private void SaveFile() {
        try {
            String content = txt.getText();
            File file = new File(filename);
            if (!file.exists()) {
                file.createNewFile();
            }
            FileWriter fw = new FileWriter(file.getAbsoluteFile());
            BufferedWriter bw = new BufferedWriter(fw);
            for (String line : content.split("\\n")) {
                bw.write(content);
            }

            bw.close();

        } catch (IOException e) {
            e.printStackTrace();
        }

    }
于 2013-03-18T18:00:58.210 回答