如何在Java中将新行字符写入文件

时间:2013-09-29 23:12:02

标签: java newline

我有一个包含新行的字符串。我将此字符串发送到函数以将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

9 个答案:

答案 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();