【问题标题】:BufferedReader then write to txt file?BufferedReader 然后写入 txt 文件?
【发布时间】:2013-07-11 10:24:20
【问题描述】:

是否可以使用 BufferedReader 读取文本文件,然后在缓冲读取器读取的同时,它还使用 PrintWriter 将读取的行存储到另一个 txt 文件中?

【问题讨论】:

  • 是的,确实有可能。我应该输入它作为答案吗?
  • 为什么不只使用两个FileChannels 并使用.transfer{From,To}()
  • @fge 嗯,你介意提供一些如何使用它的例子吗?
  • 取决于您使用的 Java 版本。如果是 Java 7,它会更短。
  • @fge 嗯,我想我用的是 7。

标签: java file io bufferedreader printwriter


【解决方案1】:

如果你使用 Java 7 并且想将一个文件直接复制到另一个文件中,那么简单如下:

final Path src = Paths.get(...);
final Path dst = Paths.get(...);
Files.copy(src, dst);

如果你想逐行读取并再次写入,请按照上面相同的方式抓取srcdst,然后执行:

final BufferedReader reader;
final BufferedWriter writer;
String line;

try (
    reader = Files.newBufferedReader(src, StandardCharsets.UTF_8);
    writer = Files.newBufferedWriter(dst, StandardCharsets.UTF_8);
) {
    while ((line = reader.readLine()) != null) {
        doSomethingWith(line);
        writer.write(line);
        // must do this: .readLine() will have stripped line endings
        writer.newLine();
    }
}

【讨论】:

    【解决方案2】:

    直接回答你的问题:

    可以,也可以使用 BufferedWriter 来做到这一点。

    BufferedReader br = new BufferedReader(new FileReader(new File("Filepath")));
    BufferedWriter bw = new BufferedWriter(new FileWriter(new File("Filepath")));
    String l;
    while((l=br.readLine())!=null){
    
        ... do stuff ...
    
        bw.write("what you did");
    
    }
    
    bw.close();
    

    【讨论】:

      【解决方案3】:

      如果您只需要复制而不检查数据,那么它是一个行:
      IOUtils.copy(reader, printWriter);

      【讨论】:

        【解决方案4】:

        是的。打开BufferedReader,然后创建PrintWriter。您可以在写入 writer 时从流中读取。

        【讨论】:

          猜你喜欢
          • 2014-06-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-19
          • 1970-01-01
          • 2011-12-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多