2

我一直在环顾四周,但找不到我需要的东西。我正在编写一个简单的代码来将一些字符串保存到 .txt 文件中。

我在用:

File archivo = new File(FileName);
fileOutputStream.write(toString().getBytes());
fileOutputStream.flush();

当我这样做时,.txt 已成功创建并保存了我需要保存的信息,但它全部保存在 1 个大行中。如何将其保存在不同的行中?

打开txt的例子:

This is line 1This is line 2This is line 3This is line 4

我在每个字符串的末尾添加了 '\n' 但它不起作用。

toString() 返回一个字符串:“这是第 1 行”;操作系统:Windows 7

4

3 回答 3

4

你可以尝试做这样的事情:

public void write(final File file, final List<String> lines) throws IOException{
    final BufferedWriter writer = new BufferedWriter(new FileWriter(file)); //new FileWriter(file, true) if you want to append the file (default is false)
    for(final String line : lines){
        writer.write(line);
        writer.newLine();
    }
    writer.flush();
    writer.close();
}

如果您使用的是 Java 8,请随意尝试使用 lambda:

public void write(final File file, final List<String> lines) throws IOException{
    final BufferedWriter writer = new BufferedWriter(new FileWriter(file)); //new FileWriter(file, true) if you want to append the file (default is false)
    lines.forEach(
            l -> {
                try{
                    writer.write(l);
                    writer.newLine();
                }catch(IOException ex){
                    ex.printStackTrace();
                }
            }
    );
    writer.flush();
    writer.close();
}

对于使用,你可以试试这个:

write(new File(fileName), Arrays.asList("This is line 1", "This is line 2", "This is line 3", "This is line 4"));

于 2013-09-02T14:42:02.417 回答
0

使用System.getProperty("line.separator"),它将返回操作系统用于分隔文本文件中的行的序列。

像这样试试。

File archivo = new File(FileName);
fileOutputStream.write(toString().getBytes());
fileOutputStream.write(System.getProperty("line.separator").getBytes());
fileOutputStream.flush();

参考:http ://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

于 2013-10-26T09:32:45.893 回答
-1

我认为您应该在写入之前将 '\n' 添加到 StringBuilder 。

StringBuilder sb = new StringBuilder();
sb.append("line 1" + "\n");
sb.append("line 2" + "\n");
sb.append("line 3" + "\n");

fileOutputStream.write(sb.toString().getBytes());

于 2021-05-05T03:36:08.337 回答