I want to read texts from two or more files using a single BufferedReader object.
This is how I did it in my code.
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();
}
The code compiled and run correctly.
What is the standard way to deal with this problem? Is it possible to read two or more files using a single 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);
}
}
By the way, did you mean
String line;
while((line = reader.readLine()) != null)
if(!line.isEmpty()) list.add(line);
for your inner loop? Your code stops at the first empty line, my suggested alternative skips empty lines. But I can only guess your real intention.
In the code above, you did create a new BufferedReader to read from the second file. What you've done is perfectly fine, although it would make sense to put the repeated code into a method that takes the filename and the list of strings as arguments.
You've got one little glitch - if there's an empty line in the middle of either of your files, your program stops reading when it gets to it. I'm not sure if that's actually what you want.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With