0425-字节输入流FileInputStream

package A10_IOStream;

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

/*
java.io.InputStream字节输入了,该抽象类是表示字节输入流的所有类的超类
共性方法:
    int read()从输入流中读取数据的下一个字节。
    int read(byte[] b)从输入流中读取一定数量的字节,并存储在缓冲区数组b中。
    void close()关闭此输入流并释放与该流关联的所有系统资源

 java.io.FileInputStream extends InputStream:文件字节输入流
 作用:把硬盘中的文件数据,读取到内存中使用
 构造方法:
    FileInputStream(File file)通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
    FileInputStream(FileDescriptor fdObj)通过使用文件描述符 fdObj 创建一个 FileInputStream,该文件描述符表示到文件系统中某个实际文件的现有连接。
    FileInputStream(String name)通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。
构造方法作用:
    1.创建FileInputStream对象
    2.把FileInputStream对象指向构造方法要读取的文件
    文件读取原理
    java程序-->JVM-->OS-->OS读取数据的方法-->读取文件
字节输入流的使用步骤(重点)
    1.创建对象  2.读取文件  3.释放资源
*/
public class D02_FileInputStream {
    public static void main(String[] args) throws IOException {
/*  一次读取一个字节
    布尔表达式(len=fis.read())!=-1
        1.fis.read()读取一个字节
        2.len=fis.read()将读取结果赋值给变量len
        3.(len=fis.read())!=-1判断变量len的值是否等于-1
    数值转字符方法:(char)num
*/
        FileInputStream fis = new FileInputStream("test.txt"); //文件内容abc
        int len=0;
        //每次读取一个字节,读取到文件末尾后调用read()方法会返回-1
        while((len=fis.read())!=-1){
            System.out.print((char)len); //abc
        }
        System.out.println("----");
        fis.close(); //关闭字节流,释放资源

/*  字节流一次读取多个字节方法
    int read(byte[] b)
        1.参数byte[] b:起缓冲作用,存储每次读取到的多个字节;数组的长度一般定义为1024(1kb)或者1024的倍数
        2.方法的返回值:每次读取的有效字节个数
*/
        FileInputStream fis2 = new FileInputStream("test.txt");
        byte[] buff=new byte[1024];
        int rlen=0;
        while ((rlen=fis2.read(buff))!=-1){ //文件尾再读取返回值-1
            System.out.println(new String(buff,0,rlen)); //写入读取的有效字节个数,从下标0开始rlen个
        }
        fis2.close();
    }
}

 

posted @ 2020-04-25 09:22  lybingyu  阅读(116)  评论(0编辑  收藏  举报