我是Java的新手并且正在尝试从java中读取文件,但我似乎无法弄清楚为什么会发生这种情况。当我尝试读取文件时,我收到了IOExceptions和错误。我只是不喜欢BufferedReader处理文件读取的方式。我不明白它的目的是什么。我听到一位朋友提到BufferedInputStream来读取文件数组中的文件和文件。
问题:如何正确地从文件数组中读取多个文件?
评论:我意识到没有代码看起来没有任何努力,但无论我多久盯着java文档,它对我来说都没有意义。我想知道是否有人可以做一个例子,我可以研究BufferedStreams的代码。从我做过的小研究中,我更喜欢它的外观,并且描述更好,但我该如何实际做到这一点?
答案 0 :(得分:0)
我想再告诉你一件事,如果你使用的是高达7.0的java版本,你必须使用try-with-resource。而使用PrintWriter代替BufferedReader会更容易。
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class ReadListOfFiles {
public static void main(String[] args) {
try {
File[] listOfFiles = {
new File("file1.txt"),
new File("file2.dat")
};
int val;
for (File file : listOfFiles) {
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
// When end of file is found in file -1 will be returned and loop will terminate.
while ((val = bis.read()) != -1) {
System.out.println((char) val);
}
} catch (IOException ex) {
System.out.println("Error in reading " + file + " file : " + ex);
} finally {
if (fis != null) {
fis.close();
}
if (bis != null) {
bis.close();
}
}
}
} catch (Exception ex) {
System.out.println("Error : " + ex);
}
}
}
答案 1 :(得分:-1)
使用我的Generic readFile类。我修改它来读取文件数组。它使用BufferedInputStream,它需要一个FileInputStream。 DataInputStream将BufferedInputStream作为参数,因此您还需要DataInputStream。我不确定如何直接回答你的问题...它相当普遍,但我希望这能帮到你。
import java.io.*;
public class Foo
{
public void readFile(File[] myFile)
{
FileInputStream fiStream = null;
BufferedInputStream biStream = null;
DataInputStream diStream = null;
foreach(File file in myFile)
{
try
{
fiStream = new FileInputStream(file);
biStream = new BufferedInputStream(fiStream);
diStream = new DataInputStream(biStream);
while (dis.available() != 0)
{
System.out.println(dis.readLine());
}
} catch (IOException e)
{
e.printStackTrace();
} finally
{
try
{
fiStream.close();
biStream.close();
diStream.close();
} catch (IOException ex)
{
ex.printStackTrace();
}
}
}
}
}