文件字节输入流

第一排全是抽象类,第二排是他们各自对应的实现类。

FileInputStream(文件字节输入流)

● 作用:以内存为基准,可以把磁盘文件中的数据以字节的形式读入到内存中去。

如何创建字节输入流管道和源文件接通

注意点

1、new File可以省略

2、可以不用绝对路径,可以用相对路径

// 1、创建一个文件字节输入流管道与源文件接通
FileInputStream is = new FileInputStream(new File("D:\\code\\javaseprojectaimax\\day03-file-io\\src\\dlei02.txt"));
FileInputStream is2 = new FileInputStream("day03-file-io\\src\\dlei02.txt");//简便写法

如何读取字节

每次读取一个字节的方法
//2、开始读取文件中的字节并输出  每次读取一个字节
int b; //仅仅申明了变量,如果未手动赋值,则会默认赋值int类型的默认值 0
while((b = is2.read()) != -1){
    System.out.print((char) b); //将字节转成字符
}

每次读取多个字节的方法
byte[] buffer = new byte[3];
// 定义一个变量用于记住每次读取了多少个字节
int len;

while ((len = is2.read(buffer)) != -1){
    //这行代码有两个动作:1、尝试读取字节,并储存到buffer数组中 2、返回每次读取的字节数

    // 3、把读取到的字节数组转换成字符串(读取多少倒出多少),并输出
    String str = new String(buffer,0,len);//0表示从第一个元素(字节)开始读
    System.out.print(str);
}
注意点:while ((len = is2.read(buffer)) != -1){ }

这行代码有两个动作:1、尝试读取字节,并储存到buffer数组中 2、返回每次读取的字节数

问题:可能导致读取汉字乱码的问题。 解决方案:1、创建和文件大小一样的数组 2、调用readAllBytes方法

readAllBytes方法(一次性读取全部字节)

// 1、创建一个文件字节输入流管道与源文件接通
FileInputStream is = new FileInputStream("day03-file-io\\src\\dlei04.txt");//简便写法

//2、一次性读取文件中的所有字节:调用readAllBytes方法。
//可以避免读取汉字乱码问题,但是如果读取文件内容过大,可能导致内存溢出
byte[] bytes = is.readAllBytes();
System.out.println(new String(bytes));
注意点

可以避免读取汉字乱码问题,但是如果读取文件内容过大,可能导致内存溢出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值