IO流概述,文件字节输入流

IO流概述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
字节流适合读取一切内容,字符流适合读音视频文件
在这里插入图片描述

文件字节输入流

在这里插入图片描述

package com.byte_stream;

import java.io.*;

public class FileInputStreamDemo {
    public static void main(String[] args) throws IOException {
        //1.创建一个文件字节输入流管道与源文件接通
        //InputStream is = new FileInputStream(new File("file-io-app\\src\\data.txt"));    //多态
        //简化写法
        InputStream is = new FileInputStream("file-io-app\\src\\data.txt");

        //2.int 4个字节用int接受 读取一个字节返回(每次读取一滴水)
//        int b1 = is.read();
//        System.out.println((char)b1);
//
//        int b2 = is.read();
//        System.out.println((char)b2);
//
//        int b3 = is.read();
//        System.out.println((char)b3);
//
//        int b4 = is.read();        //读取完毕返回-1
//        System.out.println(b4);

        //3.使用循环改进
        //定义一个变量记录每次读取的字节
        //但读取中文就会遇到问题,无法避免,无法用这个流读中文
       int b ;
       while ((b=is.read())!=-1){
           System.out.print((char)b);
       }
    }
}

在这里插入图片描述

package com.byte_stream;


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

/**
 * 目标:使用文件字节输入流,每次读取一个字节数组的数据
 */
public class FileInputStreamDemo02 {
    public static void main(String[] args) throws Exception {
        //1.创建一个文件字节输入流管道,与源文件接通
        InputStream is = new FileInputStream("file-io-app\\src\\data.txt");
        //2.定义一个字节数组,用于读取字节数组
//       byte[] buffer = new byte[3]; //3b

//       int len = is.read(buffer);
//        System.out.println("读取了" + len + "字节");
//        String rs = new String(buffer);     //将buffer以默认编码解码
//        System.out.println(rs);
//
//        int len1 = is.read(buffer);
//        System.out.println("读取了" + len1 + "字节");
//        String rs1 = new String(buffer);     //将buffer以默认编码解码
//        System.out.println(rs1);
//
//
//        int len2 = is.read(buffer);             //读取完毕返回-1
//        System.out.println("读取了" + len2 + "字节");
//
//        //读取多少倒出多少
//        String rs3 = new String(buffer,0,len2);     //将buffer以默认编码解码
//        System.out.println(rs3);

        //3.改进用循环,每次读取一个字节数组
        byte[] buffer = new byte[3]; //3b
        int len;  //记录每次读取的字节数
        while((len=is.read(buffer))!=-1){
            System.out.println(new String(buffer,0,len));
        }
    }
}

在这里插入图片描述
在这里插入图片描述

package com.byte_stream;


import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

/**
 * 目标:使用文件字节输入流,一次读完文件的全部字节,可以解决乱码问题
 */
public class FileInputStreamDemo03 {
    public static void main(String[] args) throws Exception {
        File f = new File("file-io-app\\src\\data.txt");
        InputStream is = new FileInputStream(f);

        //2.定义一个字节数组与文件的大小刚刚好一样 JDK9有,readAllBytes方法达到相同效果
        byte[] buffer = new byte[(int)f.length()];
       int len = is.read(buffer);
        System.out.println("读取了多少个字节"+len);
        System.out.println("文件大小"+f);
        System.out.println(new String(buffer));
        
        

    }

}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值