94.FileInputStream文件字节输入流

FileInputStream文件操作字节输入流

【构造方法】

<1>FileInputStream(String filePath);根据用户指定的文件路径创建对应的FileInputStream文件操作输入字节
【异常】如果构造方法中的路径文件不存在则会抛出异常:FileNotFoundException

<2>FileInputStream(File file);【构造方法里的参数是一个File类对象】根据用户指定的对应文件的File类对象,创建对应的FileInputStream
【异常】如果文件不存在,抛出异常:FIleNotFoundException

【成员方法】

<1>int read(); 从文件中读取一个字节数据返回,如果读取到底末尾,返回-1 EOF End Of File

<2>int read(byte[] buf);【重点】从文件中读取数据到缓冲数组buf中,返回值类型是从文件中读取到的字节个数;如果读取到文件末尾返回-1 EOF End Of File ;
【异常】如果在运行过程中出现了问题,抛出异常IOException

【操作流程】

<1>明确对应文件的路径,可以选择直接给予对应的String 类型路径,或者创建对应的File类对象,作为参数;
<2>创建FileInputStream 文件操作字节输入流,打开文件操作管道;
<3>从FileInputStream对象中使用方法,读取数据;
<4>关闭资源!!! FileInputStream类对象,就像关闭水龙头

class Demo10 {
    public static void main(String[] args) throws IOException {
        //创建file类对象
        File file = new File("C:\\Users\\123\\Desktop\\file\\file.txt");
        //创建文件操作字节输入流对象 FileInputStream  构造方法参数就传File类对象
        FileInputStream fileInputStream = new FileInputStream(file);
        //调用成员方法read() 读取文件的一个字节数据
        //返回int类型的数据,有且只有低8位才是有效数据
        //如果返回 遍历执行
        int read = 0;
        //不等于-1 继续进行执行
        while ((read = fileInputStream.read()) != -1){
            System.out.println(read);
        }
        //创建一个新的文件输入流对象
        FileInputStream fileInputStream1 = new FileInputStream(file);
        //调用成员方法read(byte[] buf); 从文件中读取数据到数组buf中,返回值是【从文件中读了多少个字节】
        //int read(byte[] buf); 该方法参数需要一个byte类型数组,这是一个缓冲数组,自定义数组容量;
        //但是一般情况下数组容量是1024的2的指数倍【也就是2倍,3倍...】,1024 2048 4096 8192 返回值类型是缓冲数组中有效元素个数
        //读取到数据字节个数,如果读取到文件末尾,返回-1
        //读取文件 4KB缓冲字节数组
        byte[] buy = new byte[1024*4];
        int readByteLength = fileInputStream1.read(buy);
        if(readByteLength != -1){
            //byte 字符 解码成字符串 ==> 使用 String(字符数组,开始解码下标,解码字符个数)
            System.out.println(new String(buy,0,readByteLength));
            //这里不使用数组length属性来获取长度,是因为数组的length属性获取的数组声明的长度,不一定是实际元素的数量;
            System.out.println(buy.length);
        }
        //关闭资源
        fileInputStream.close();
        fileInputStream1.close();
    }
}

【效率问题】
使用缓冲数组的速度是要远远高于单一字节读取操作的速度的;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值