【问题标题】:Java fileOutputStreamJava 文件输出流
【发布时间】:2013-09-05 16:56:58
【问题描述】:

我一直在四处寻找,但找不到我需要的东西。 我正在编写一个简单的代码来将一些字符串保存到 .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

【问题讨论】:

标签: java file fileoutputstream


【解决方案1】:

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

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"));

【讨论】:

    【解决方案2】:

    使用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

    【讨论】:

      【解决方案3】:

      我认为您应该在写入之前将 '\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());

      【讨论】:

        猜你喜欢
        • 2012-05-16
        • 2018-05-25
        • 2012-05-02
        • 1970-01-01
        • 2013-03-29
        • 1970-01-01
        • 1970-01-01
        • 2013-03-07
        • 2015-07-27
        相关资源
        最近更新 更多