文件逐行写入

时间:2016-08-24 22:11:04

标签: java nio

我在目录中编写一组文件。这是我的代码,

String directoryName = "logs";
    File directory = new File(String.valueOf(directoryName));
    if (!directory.exists()) {
        directory.mkdir();
    }

    System.out.println("Simulating logs....");
    for (int i = 0; i < 1440; i++) {

        long now = System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(1);

        String fileName = now + ".txt";
        Path filePath = Paths.get(directoryName, fileName);

        LogGenerator generator = new LogGenerator(noOfServers);
        Set<String> logs = generator.generateLog();
        try {
            Files.write(filePath, logs, Charset.forName("US-ASCII"));
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

问题在于,设置日志的所有元素都在第一个元素之后追加并写在同一行中。这发生在这一行,

Files.write(filePath, logs, Charset.forName("US-ASCII"));

我想在新行中编写集合的每个元素。我怎么能实现这个目标呢?

1 个答案:

答案 0 :(得分:4)

以下是javadocwrite方法的说法:

  

&#34;将文本行写入文件。每行都是一个char序列,按顺序写入文件,每行由平台的行分隔符终止,由系统属性line.separator定义。使用指定的字符集将字符编码为字节。&#34;

我认为该方法可以完成javadoc明确说明的方法。以下是一些可能的替代解释:

  • 这些行由generateLog()方法连接。
  • Java对平台行分隔符的概念(在运行代码的机器上)以及用于查看文件的应用程序的预期之间存在不匹配。
  • 您正在查看未呈现原始行分隔符的上下文中的输出;例如一个HTML文档......