简单认识java里面的流

1.简单认识java里面的流结构

在java里面通过流对来实现对文件,磁盘,内存进行读取,这里以为流的形式比较多,所以主要写一下一些常用流的用法。

分析:通过源码可以看出,java的设计者定义两个抽象类,分别作为输出流和输入流。但是有个问题是,(为什么不直接用接口)

然后其他流来分别继承这两个抽象类。

2. FileInputStream类的使用

分析:大家可以看到read()方法的返回值是int类型为-1,那么为什么是-1呢?,主要因为byte的取值范围是-128-127之间,如果返回-1的话,不知道里面内容是否读取完毕,但是如果返回int类型的-1,那么会把高位进行补0,然而int的取值范围是0-255,所以如果返回-1类型,说明文件里面的内容读取完毕。

3.FileOutputStream类的使用

分析:通过上述可以看出主要是,建立一个输出通道,但是如果我们的文件没有创建,那么FileOutputStream这个类会帮助我们进行创建文件,FileOutputStream和FileInputStream在一起联合应用。

4.FileOutputStream和FileInputStream的联合使用

分析:从上述可以看出主要有三种方式,来实现对FileInputStream和FileOutStream的使用,第一种方式就是读一个字节,写一个字节,但是问题是读的时候是把byte转化为int类型,写的时候有把int类型转化为byte类型,这样会不会损失精度。第二种方式是使用byte数组,这样比第一种方式快,第三种就是使用BufferInputStream来读取信息,从源码来看,它里面也是一个数组,不过它一次性好像要读取8192个字节。

分析:通过上述可以发现流的使用主要通过和文件结合在一起使用,那么问题来了,在项目中发现大部分在进行文件操作时,都使用的是递归进行操作,这样会不会带来性能上的问题?

5.切记关闭流

分析:如果我们打开了流的操作,一定要记得关闭流,应该在finally块写对流的关闭,因为发生异常时,我们也可以关闭流,那么有人会说在finally块里面什么不把两个输出流和输入流写下一个try块里面,而写在两个try块里面,假如在第一个try块出现异常,那么第二个try块也会正常关闭。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值