当前位置: 首页 > 知识库问答 >
问题:

使用BufferedReader读取多个文件

蓬森
2023-03-14

我想使用一个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();
}

共有1个答案

艾英范
2023-03-14
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);

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

 类似资料:
  • 问题内容: 我在使用BufferedReader时遇到问题 我想打印一个文本文件的6行: 现在,从每次调用readLine()方法可以收集到的信息开始,它都会自动前进到下一行。 所以我不能使用条件br.readLine()!= null,因为它已经将其前进了一行,并且我得到了输出: 我使用什么条件来检查文本字段中是否还有新行。 提前致谢! 问题答案: 这就是问题: 您有两次调用-第一个 仅 检查是

  • 我想打印一个文本文件的6行: 现在,根据我每次调用readLine()方法时所收集到的信息,它会自动前进到下一行。 所以我不能使用条件br.readline()!=null,因为它已经提前了一行,我得到的输出是: 我使用什么条件来检查文本字段中是否还有新行。 提前道谢!

  • 我对java比较陌生,对如何使用缓冲读取器读取文件很好奇。这是因为我正在上一门课,被分配做一个简单的ceaser密码,我应该解密一个文本文件,创建一个新文件,并将解密的文本放入该文件。我可以用扫描仪和一个10KB的小文件来完成,但是当我要测试的100MB的大文本文件的时候,它是非常慢的。这是我的代码,它应该是读取文件内容。 如果有人能给我指明正确的方向,那就太好了。 提前致谢

  • 我有一个名为“add”的方法,它将字符串作为参数,并使用bufferedwriter将其写入文件。完成此操作后,bufferedwriter将被刷新。 在另一个方法“read”中,我遍历文件中的行,但这些行是空的(因此我不能打印它们)。

  • 问题内容: 我想使用BufferedReader在控制台中输入多行文本,然后单击“ Enter”以查找整个文本长度的总和。问题在于,似乎我进入了一个无限循环,当我按“ Enter”键时,程序并没有结束。我的代码如下: 你能告诉我我在做什么错吗? 问题答案: 阅读所有行的惯用方式是。另外,我建议发表声明。就像是 如果你想,当你收到一个空行来结束循环,在添加一个测试为循环 JLS-14.15。该声明说

  • 为什么在使用读取数据时添加?