我在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();
}
}
感谢您的帮助
答案 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();
}
}