我有一个包含新行的字符串。我将此字符串发送到函数以将String写入文本文件:
public static void writeResult(String writeFileName, String text)
{
try
{
FileWriter fileWriter = new FileWriter(writeFileName);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.write(text);
// Always close files.
bufferedWriter.close();
}
catch(IOException ex) {
System.out.println("Error writing to file '"+ writeFileName + "'");}
} //end writeResult function
但是当我打开文件时,我发现没有任何新行。 当我在控制台屏幕中显示文本时,它会以新行显示。如何在文本文件中编写新行字符。
修改
假设这是我发送给上述函数的参数text
:
I returned from the city about three o'clock on that
may afternoon pretty well disgusted with life.
I had been three months in the old country, and was
如何在文本文件中按原样(使用新行)编写此字符串。我的函数将字符串写在一行中。你能为我提供一种方法来将文本写入文件,包括换行吗?
编辑2: 该文本最初位于.txt文件中。我使用以下方式阅读文本:
while((line = bufferedReader.readLine()) != null)
{
sb.append(line); //append the lines to the string
sb.append('\n'); //append new line
} //end while
其中sb
是StringBuffer
答案 0 :(得分:35)
在编辑2:
中while((line = bufferedReader.readLine()) != null)
{
sb.append(line); //append the lines to the string
sb.append('\n'); //append new line
} //end while
您正在阅读文本文件,并为其添加换行符。不要追加换行符,这些换行符不会在一些简单的Windows编辑器(如记事本)中显示换行符。而是使用以下方法附加特定于操作系统的行分隔符字符串:
sb.append(System.lineSeparator());
( for Java 1.7 and 1.8 )
或强>
sb.append(System.getProperty("line.separator"));
( Java 1.6及以下)
或者,稍后您可以使用String.replaceAll()
将StringBuffer中构建的字符串中的"\n"
替换为特定于操作系统的换行符:
String updatedText = text.replaceAll("\n", System.lineSeparator())
但是在构建字符串时附加它会更有效率,而不是追加'\n'
并稍后替换它。
最后,作为开发人员,如果您使用记事本来查看或编辑文件,则应删除它,因为有更多功能强大的工具,如Notepad++或您最喜欢的Java IDE。
答案 1 :(得分:18)
BufferedWriter类提供newLine()
方法。使用它将确保平台独立性。
答案 2 :(得分:18)
简单的解决方案
File file = new File("F:/ABC.TXT");
FileWriter fileWriter = new FileWriter(file,true);
filewriter.write("\r\n");
答案 3 :(得分:6)
bufferedWriter.write(text + "\n");
此方法可以使用,但平台之间的新行字符可能不同,因此您也可以使用此方法:
bufferedWriter.write(text);
bufferedWriter.newline();
答案 4 :(得分:3)
将字符串拆分为字符串数组并使用上面的方法编写(我假设您的文本包含\ n以获取新行)
String[] test = test.split("\n");
和内部循环
bufferedWriter.write(test[i]);
bufferedWriter.newline();
答案 5 :(得分:1)
将此代码放在您想要插入新行的位置:
bufferedWriter.newLine();
答案 6 :(得分:1)
这种方法对我来说总是有用的:
String newLine = System.getProperty("line.separator");
String textInNewLine = "this is my first line " + newLine + "this is my second
line ";
答案 7 :(得分:0)
以下是获取当前平台的默认换行符的代码段。
使用
System.getProperty("os.name")
和
System.getProperty("os.version").
例如:
public static String getSystemNewline(){
String eol = null;
String os = System.getProperty("os.name").toLowerCase();
if(os.contains("mac"){
int v = Integer.parseInt(System.getProperty("os.version"));
eol = (v <= 9 ? "\r" : "\n");
}
if(os.contains("nix"))
eol = "\n";
if(os.contains("win"))
eol = "\r\n";
return eol;
}
eol是换行符
答案 8 :(得分:0)
PrintWriter out = null; // for writting in file
String newLine = System.getProperty("line.separator"); // taking new line
out.print("1st Line"+newLine); // print with new line
out.print("2n Line"+newLine); // print with new line
out.close();