Java_IO

IO技术在Java上是非常常见的,今天来梳理一下IO方面的知识。

在很长的一段时间里面,我也很困惑,IO里面一大堆,又是InputStream,outputStream 的,然后又是Writer 和 Reader ,仔细一看,唉。有些还带有Buffer的。本来晕头转向的,现在彻底找不到北了。


首先,先来个分类。分类都一样,按两大类分:

按照流向分是输入流和输出流,

按照处理单位分为字节流和字符流


下面来看看这张图:


图不是我画的,是别人那里复制粘贴过来的,哈哈。这里粘贴的,在此谢谢了!


首先要搞清楚一点的是:

输入流和输出流,什么时候用输入流,什么时候用输出流。所谓的输入输出是相对于程序(内存)来说的,如果是从外面(硬盘)读取数据,那么就用输入流,如果要往外面写出数据,那么就用输出流。就这么简单,不要再迷糊了。


下面来看字节流和字符流:

从上面那张图可以看到,字节流都是 InputStream  和 OutputStream 结尾的,而字符流是 Writer 和 Reader 结尾的,这就很好区分了嘛,一看就知道什么是字节流,什么是字符流。好了,搞清楚这个就看下一个问题,什么时候该用字节流,什么时候该用字符流?

记住,凡是操作文本文件,注意,是文本文件,那么就用字符流。例如:txt记事本文件

凡是操作的是非文本文件,那么就用字节流,例如:图片,音频,视频。word文档等

前面不是说文本文件都用字符流去操作么,怎么word是用字节流了呢?这不扯淡么?别,这不是扯淡,word是不是也可以插入图片等,对吧,前面不是说图片是用字节流去操作的么。对吧,还有一点就是word是经过加密了的,只有word软件才能打开,其他软件都不行,对吧,这就对了嘛。所以,word也是用字节流去操作。


字节流和字符流都搞清楚了,咦,图上面不是还有 buffer 的么?这又是什么鬼,唉。名字上不是很清楚了么,人家是带了个Buffer 缓冲数组的啊,然后就没其他了。

不过还有一点很重要的是;凡是带有Buffer的,都不具备操作文件的能力,也就是说,它本身是不能去读取和写入东西的,没事可以看看这些buffer的构造方法,带有Buffer的构造方法里面,一般都需要你传入一些inputStream或者outStream,对了,顺便再说一句,虽然不具备读写文件能力,但人家也有close的方法,这是为什么呢?还有为什么,没为什么,你不是传进去一个么?其实关闭的就是你传进去的这个。所以说,close  buffer之后,就不需要对传进去的进行关闭了,没意义的!


好了,什么基础的理论知识先讲到这里,下面开始学习!代码是最好的老师嘛,对吧,不管什么都要实践一下,


FileInputStream和FileOutputStream的简单使用

Java_IO_BufferedIntputStream_And_BufferedOutputStream

Java_IO_ObjectInputStream_And_ObjectOutputStream

Java_IO_字节流_Reader_and_Writer

Java_IO_SequenceInputStream文件的合并

(后续更新。。。)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值