Java JTextareaTXT;txt.getText()跳过\";
我在TextArea中有一些文本,我想将其保存在文件中,我的代码如下: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
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文本区域中