Java JTextareaTXT;txt.getText()跳过\";

Java JTextareaTXT;txt.getText()跳过\";,java,swing,io,Java,Swing,Io,我在TextArea中有一些文本,我想将其保存在文件中,我的代码如下: private void SaveFile() { try { String content = txt.getText(); File file = new File(filename); if (!file.exists()) { file.createNewFile(); } FileWriter f

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

}

感谢您的帮助,

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


“\n”

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


“\n”

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

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

它应该有用。尝试使用显示行结尾的文本编辑器\r和\n并查看出现的内容

如果要确保文本文件可以由windows实用程序(如记事本)打开,而这些实用程序只能理解
\r\n
,则必须通过以下方式对其进行规范化:

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

这将用序列
\r\n

替换所有前面没有
\r
\r\n

它应该起作用。尝试使用显示行结尾的文本编辑器\r和\n并查看出现的内容

如果要确保文本文件可以由windows实用程序(如记事本)打开,而这些实用程序只能理解
\r\n
,则必须通过以下方式对其进行规范化:

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

这将用序列
\r\n
替换前面没有
\r
的所有
\n
您的文本区域的内容为字符串。现在您可以在换行符处拆分它,然后您将获得字符串[]。然后可以迭代字符串[]数组并将其写入文件:

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

    }

您将文本区域的内容设置为字符串。现在您可以在换行符处拆分它,然后您将获得字符串[]。然后可以迭代字符串[]数组并将其写入文件:

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

    }
您应该使用Swing文本组件提供的read()和write()方法。有关更多信息,请参阅

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

textComponent.getDocument().putProperty(DefaultEditorKit.EndOfLineStringProperty, "\r\n");
您应该使用Swing文本组件提供的read()和write()方法。有关更多信息,请参阅

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

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

你能分享一下
txt.getText()的输出吗?如何验证此跳过的“\n”。某些文本编辑器(grrr记事本)ksip\n支持回车(\r)请尝试另一个文本编辑器。\n被视为新行。因此,请尝试添加转义字符,如\\nQuirliom-u were right。感谢u@Quirliom也许你应该把它作为一个答案。你能分享一下
txt.getText()的输出吗?如何验证此跳过的“\n”。某些文本编辑器(grrr记事本)ksip\n支持回车(\r)请尝试另一个文本编辑器。\n被视为新行。因此,请尝试添加转义字符,如\\nQuirliom-u were right。感谢u@Quirliom也许你应该把它作为一个答案。我在记事本中打开了我的保存文件,它在一行上显示了我。。但当我在其他编辑器中打开它时,它也是我“进入”的,所以这是记事本的错误:在文本区域中保存数据我在记事本中打开了我的保存文件,它在一行上显示了我。。但当我在其他编辑器中打开它时,它也是我“进入”的,所以这是记事本的错误:数据保存在\\n文本区域中