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

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

谢谢你的帮助

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

如果你想确保文本文件可以通过记事本等只能理解\r\n的Windows实用程序打开,你必须自己规范化它:

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

这将用序列\r\n替换所有\n前面没有\r\n

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

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

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

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

“\ n”

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

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