java - 使用 BufferedReader 读取多个文件

标签 java io bufferedreader

我想使用单个 BufferedReader 对象从两个或多个文件中读取文本。

这就是我在代码中的做法。

Charset charset = Charset.forName("UTF-8");
Path p1 = Paths.get("sum1.csv");

List<String> list = new ArrayList<String>();
BufferedReader reader = Files.newBufferedReader(p1, charset);
try {
    String line;
    while((line = reader.readLine()) != null && !line.isEmpty()){
        list.add(line);
    }
} catch (IOException e) {
    System.err.format("IOException: %s%n", e);
    reader.close();
}

Path p2 = Paths.get("sum2.csv");
reader = Files.newBufferedReader(p2, charset);
try {
    String line;
    while((line = reader.readLine()) != null && !line.isEmpty()){
        list.add(line);
    }
} catch (IOException e) {
    System.err.format("IOException: %s%n", e);
    reader.close();
}

代码正确编译运行。

处理这个问题的标准方法是什么?是否可以使用单个 BufferedReader 读取两个或多个文件?

最佳答案

序列输入流

Charset charset = Charset.forName("UTF-8");
List<String> list = new ArrayList<String>();
try(
  FileInputStream is1=new FileInputStream("sum1.csv");
  FileInputStream is2=new FileInputStream("sum2.csv");
  SequenceInputStream is=new SequenceInputStream(is1, is2);
  BufferedReader reader=new BufferedReader(new InputStreamReader(is, charset));)
{
  try {
      String line;
      while((line = reader.readLine()) != null && !line.isEmpty()){
          list.add(line);
      }
  } catch (IOException e) {
      System.err.format("IOException: %s%n", e);
  }
}

顺便问一下,你的意思是

String line;
while((line = reader.readLine()) != null)
  if(!line.isEmpty()) list.add(line);

你的内循环?您的代码在第一个空行处停止,我建议的替代方法会跳过空行。但我只能猜测你的真实意图。

enter image description here

关于java - 使用 BufferedReader 读取多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21684045/

相关文章:

c - fscanf() 不读取和崩溃

c - 用模数在 C 中移动字符,输出到文件在一个输入上产生不受支持的文件格式,在另一个输入上产生 txt 文件

java - 如何追加到java中的文件末尾?

Java Maven 库项目模板

带有抽象类的 java.lang.InstantiationException 使用组件扫描

java - 垂直x。如何创建真正的多语言 JVM 应用程序?

c - 带有对齐堆栈缓冲区的 O_DIRECT IO 问题

java - 按特定字符序列将文本文件拆分为多个文件

java - 如何使用bufferedreader在java中接受字符串数组

java - 通过 Java Servlet 发送 XML 数据时发送不需要的字符