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