简单认识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在一起联合应用。

扫描二维码关注公众号,回复: 3844861 查看本文章

4.FileOutputStream和FileInputStream的联合使用

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

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

5.切记关闭流

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

猜你喜欢

转载自blog.csdn.net/weixin_41629878/article/details/83512196
今日推荐