JTextArea txt; txt.getText()跳过“\ n”

时间:2013-03-18 17:42:33

标签: java swing io

我在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();
    }

}

感谢您的帮助

5 个答案:

答案 0 :(得分:3)

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

如果您想确保文本文件可以通过记事本等只能理解\r\n的Windows实用程序打开,那么您必须自己将其标准化:

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

这将取代序列\n之前没有\r的所有\r\n

答案 1 :(得分:2)

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

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

textComponent.getDocument().putProperty(DefaultEditorKit.EndOfLineStringProperty, "\r\n");

答案 2 :(得分:0)

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

“\ n” 个

答案 3 :(得分:0)

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

答案 4 :(得分:0)

您在Text中拥有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();
        }

    }