【问题标题】:Writing Multiple Lines to a File (.txt) in Java [duplicate]在Java中将多行写入文件(.txt)[重复]
【发布时间】:2018-12-28 05:56:24
【问题描述】:

我是 File Streams 的新手,希望能得到一些帮助。以下代码是我用来写入指定文件的代码。

OutputStream outStream = new FileOutputStream(file);
outStream.write(contentsToWrite.getBytes());
outStream.close();
  1. 如何将不同的行保存到文件中?在我的情况下,使用 \n 在写入文件时不起作用。
  2. 如何在文件中保存一行而不删除其他行?

【问题讨论】:

  • 可能重复 Write multiple lines in a text file ( java) 和/或 How to append text to an existing file in Java 注意 - 如果您想在新旧内容之间换行,您可能需要在新内容前面加上 System.lineSeparator()
  • 你用什么编辑器打开文件?如果文件使用 Unix 行结尾,则可以通过记事本或 Windows 10 中较新版本的记事本以外的任何东西查看它
  • 永远不要使用String.getBytes(),始终使用接受字符集或字符集名称的getBytes 之一。但是,在这种情况下,您最好使用(缓冲)编写器而不是 OutputStream

标签: java file file-io text-files


【解决方案1】:

Java 有一些用于文件流的包装类。 BufferedWriter 可用于将字符串写入文件。

boolean append = true;
String filename = "/path/to/file";

BufferedWriter writer = new BufferedWriter(new FileWriter(filename, append));
// OR: BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename, append)));

writer.write(line1);
writer.newLine();
writer.write(line2);
writer.newLine();
// ......       

writer.close();

append 表示您写入文件末尾而不是清空文件。

【讨论】:

  • A(nother) 使用BufferedWriter 的一大优势是它将为运行它的系统提供正确的行尾字符,而不是一些硬编码(非交叉平台)EOL,如\n..
  • 使用FileWriter 的缺点是它将始终使用默认字符编码。
【解决方案2】:

有一个不错的简单方法,它允许您使用要编写的字符串列表和文件本身来执行此操作。

        List<String> lines=new ArrayList<>(contentToWrite);//if it is an array or something that isn't a list
        Files.write(file.toPath(),lines);

【讨论】:

    【解决方案3】:

    FileOutputStream 类的构造方法有第二个参数。如果您将其设置为 true。它会将内容附加到您编写的文件中。而“\r\n”可以换行。

    OutputStream outStream = new FileOutputStream("a.txt",true);
    outStream.write("hello".getBytes());
    outStream.write("\r\n".getBytes());
    outStream.write("hello".getBytes());
    outStream.close();
    

    【讨论】:

    • 感谢您的帮助。当它附加到文档时有什么不同?
    • @CameronReynes append 表示在 existed 之后添加新行
    • 每次都在文件中保存一行而不删除已存在的行
    猜你喜欢
    • 2012-12-05
    • 1970-01-01
    • 2013-07-19
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    相关资源
    最近更新 更多