Java 从文件数组中读入文件

Java 从文件数组中读入文件,java,arrays,file,file-io,bufferedinputstream,Java,Arrays,File,File Io,Bufferedinputstream,我是Java新手,正在尝试从Java读取文件,但我似乎不明白为什么会发生这种情况。当我试图读取文件时,会出现异常和错误。我只是不喜欢BufferedReader处理文件读取的方式。我不明白它想做什么。我听到一位朋友提到BufferedInputStream可以读取文件和文件数组中的文件 问题:如何从文件数组中正确读取多个文件 注释:我意识到没有任何代码看起来像是白费力气,但无论我盯着java文档看多久,它对我来说都毫无意义。我想知道是否有人可以举个例子,我可以研究BufferedStreams的

我是Java新手,正在尝试从Java读取文件,但我似乎不明白为什么会发生这种情况。当我试图读取文件时,会出现异常和错误。我只是不喜欢BufferedReader处理文件读取的方式。我不明白它想做什么。我听到一位朋友提到BufferedInputStream可以读取文件和文件数组中的文件

问题:如何从文件数组中正确读取多个文件


注释:我意识到没有任何代码看起来像是白费力气,但无论我盯着java文档看多久,它对我来说都毫无意义。我想知道是否有人可以举个例子,我可以研究BufferedStreams的代码。从我做的一个小调查来看,我更喜欢它的外观,描述也更好,但我实际上是如何做到的呢?

使用我的通用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();
              }
           }
       }
    }
}

我还想告诉您一件事,如果您使用的java版本高达7.0,则必须使用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);
        }
    }
}

非常感谢。我来看看。