Java学习心得之流(IO)

一、Java流式输入/输出原理

在Java程序中,对于数据的输入/输出操作以“流”(stream)方式进行;JDK提供了各种各样的“流”类,用以获取不同种类的数据。程序通过标准的方法输入或输出数据。

原理:


       流是用来读写数据的,这里以文件为例,在Java中有个File类,它封装的是文件的名称,是内存里面的一个对象,真正的文件是硬盘上的一块空间,在这个空间里存储者着各种数据,如果我们要读取文件中的数据,就是通过流的方式。我们知道计算机存储各种类型的数据采用的是二进制010101这样的形式,那么程序是如何通过流的方式读取这些数据的呢?

       举个生活中的例子,想象一下我们是如何用一根管道从桶中取水的,我们将管道插到水桶上,然后在管道的另一边打开水龙头,水会从管道中流出来,我们把这根管道称为流,而Java里面的流式输入/输出跟这个原理是一样的。假如,我们要从文件中读取数据时,把一根管道插进文件里,然后文件里面的数据就会流进管道,在管道另一边我们就可以读取文件流出来的各种数据了,当你要往文件写入数据时,也是通过管道让要写入的数据流进文件中。除了读写文件以外,还可以通过网络的形式,刚才我们把文件个流比喻成桶和管道,这里网络我们可以想象成家里的自来水管流出来的水,原理是类似的(只不过我们不能往自来水里面灌水,而网络不仅能读取还能写入)。

       我们知道计算机的世界是二进制的世界,数据的存储和传输都是通过二进制的形式,因此从文件中读取的数据都是10101,看不懂怎么办?这里就像桶中流出的水有杂质一样,要去除这些杂志 ,我们可以在管道上添加一层过滤层,把杂志过滤掉,同理,我们可以在读取文件的管道上在套一层更加强大的管道,将二进制转换成字符串,这样我们就可以看懂这些字符串了。


二、流的分类

Java中可以从不同的角度对流进行分类:

       根据数据流的方向

  • 输入流:程序可以从中读取数据的流。
  • 输出流:程序能向其中写入数据的流。
       根据数据处理单位
  • 字节流:是最原始的流,读取出来的是10101这种底层的数据,它是按字节来读取的(1字节8bit)。
  • 字符流:一个字符一个字符的读取数据,一个字符是2个字节。
       根据处理数据功能
  • 节点流:用于直接操作目标设备的流。
  • 处理流:是对一个已存在的流封装,通过对数据进行处理为程序提供灵活读写的功能。

JDK所提供的所有流类型位于包Java.io内都分别继承以下四种抽象类


这里我们如何判定流式输入流还是输出流的?记住一点,输入流和输出流是站在程序的角度来说的,就是说流入程序的是输入流,流出程序的是输出流。


三、节点流和处理流


       注意,不管外面包裹多少层处理流,其最终都是建立在节点流之上的。

1.节点流类型


       节点流是直接插到数据源上面的,直接读取数据源里面的数据,或者直接写入数据源。

2.处理流

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值