我想使用单个 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);
你的内循环?您的代码在第一个空行处停止,我建议的替代方法会跳过空行。但我只能猜测你的真实意图。
关于java - 使用 BufferedReader 读取多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21684045/