review24

文件字节输入流

使用输入流通常包括4个基本步骤:

设定输入流的源;

创建指向源的输入流;

让输入流读取源中的数据;

关闭输入流。

如果对文件读取需求比较简单,那么可以使用FileInputStream类(文件字节输入流),该类时InputStream类的子类,该类的实例方法都是从InputStream类继承来的。

1.构造方法

可以使用FileInputStream类的下列构造方法创建指向文件的输入流。

FileInputStream(String name);

FIleInputStream(File file);

第一个构造方法使用给定的文件名name创建FileInputStream流,第二个构造方法使用File对象创建FileInputStream流。参数name和file指定的文件称为输入流的源。

FileInputStream输入流打开一个达到文件的通道(源就是这个文件,输入流指向这个文件)。当创建输入流时,可能会出现错误。例如,输入流指向的文件不存在。当出现I/O错误,java生成一个错误信号,它使用IOException(IO异常)对象来表示这个错误信号。程序必须在try-catch语句中的try块部分创建输入流,在catch块部分捕获并处理这个异常。

2.使用输入流读取字节

输入流的目的是提供读取源中的通道,程序可以通过这个通道读取源中的数据。文件字节流可以调用从父类继承的read方法顺序地读取文件,只要不关闭流,每次调用read方法就顺序地读取文件中的其余内容,知道文件的末尾或文件字节输入流被关闭。

字节输入流的read方法以字节为单位读取源中的数据。

int read()输入流调用该方法从源中读取单个字节的数据,该方法返回字节值,如果未读出就返回-1。

int read()输入流调用该方法从源中视图读取b.length()个字节到字节数据b中,返回实际读取的字节数目,如果到达文件的末尾,则返回-1.

int read(byte b[], int off, int len)输入流调用该方法从源中试图读取len个字节到字节数据b中,并返回实际读取的字节数目。如果到达文件末尾,则返回-1,参数off指定从字节数据的某个位置开始存放读取的数据。

FileInputStream流顺序的读取文件,只要不关闭流,每次调用read方法就顺序地读取源中其余的内容,直到源的末尾或流被关闭。

3.关闭流

输入流都提供了关闭方法close(),尽管程序结束时会自动关闭所有打开的流,但是当程序使用完流后,显式地关闭任何打开的流。如果没有关闭那些被打开的流,那么就可能不允许另一个程序操作这些流所用的资源。

 代码展示如下所示:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class Test05 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int n = -1;
        byte [] a = new byte[100];
        try{
            File file = new File("F:/workspace1/Test01/src/pack08/Test05.java");
            FileInputStream in = new FileInputStream(file);
            while((n = in.read(a, 0, 100)) != -1)
            {
                String str = new String(a, 0, n);
                System.out.println(str);
            }
            in.close();
        }
        catch(IOException e)
        {
            System.out.println("File read Error" + e);
        }
    }

}

运行结果如下所示:

将该Test05.java文件中的代码全部输出。

String str = new String(a, 0, n);

注意这条语句中读入数组a中的n,不可以用100.

猜你喜欢

转载自www.cnblogs.com/liaoxiaolao/p/9451600.html