31

我有一个包含新行的字符串。我将此字符串发送到函数以将字符串写入文本文件,如下所示:

    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

sbStringBuffer在哪里

4

9 回答 9

39

编辑 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());适用于 Java 1.7 和 1.8 sb.append(System.getProperty("line.separator"));Java 1.6 及以下

或者,稍后您可以使用特定于操作系统的换行符String.replaceAll()替换"\n"StringBuffer 中内置的字符串:

String updatedText = text.replaceAll("\n", System.lineSeparator())

但是在构建字符串时追加它比'\n'稍后追加和替换它更有效。

最后,作为开发人员,如果您正在使用记事本查看或编辑文件,则应该放弃它,因为有更强大的工具,例如Notepad++或您最喜欢的 Java IDE。

于 2013-09-29T23:27:54.647 回答
20

简单的解决方案

File file = new File("F:/ABC.TXT");
FileWriter fileWriter = new FileWriter(file,true);
filewriter.write("\r\n");
于 2014-01-17T06:48:18.607 回答
19

BufferedWriter 类提供了一种newLine()方法。使用它可以确保平台独立性。

于 2013-09-29T23:15:45.943 回答
6

bufferedWriter.write(text + "\n");此方法可行,但换行符可能因平台而异,因此您也可以使用此方法:

bufferedWriter.write(text);
bufferedWriter.newline();
于 2013-09-29T23:14:31.273 回答
3

将字符串拆分为字符串数组并使用上述方法写入(我假设您的文本包含 \n 以获取新行)

String[] test = test.split("\n");

和里面的一个循环

bufferedWriter.write(test[i]);
bufferedWriter.newline();
于 2014-01-17T07:14:19.973 回答
3

这种方法总是对我有用:

String newLine = System.getProperty("line.separator");
String textInNewLine = "this is my first line " + newLine + "this is my second 
line ";
于 2018-05-04T15:10:44.630 回答
1

将此代码放在要插入新行的任何位置:

bufferedWriter.newLine();
于 2014-07-28T16:37:20.027 回答
1
    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();
于 2019-12-23T11:16:20.007 回答
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 是换行符在哪里

于 2014-06-15T22:32:56.580 回答