InputStream和OutputStream输入和输出流

来源:互联网 发布:当幸福来敲门 知乎 编辑:程序博客网 时间:2024/05/29 14:26

首先,先让咋们回到上一篇博客随意大意说说递归删除,递归删除一样,把查找改成delect即可,为什么要递归找出文件在删除,我看操作系统为什么文件夹下面有东西也可用删呢?


嗯,经过实验,是删不掉的,文件夹下有文件,猜测操作系统也是delect换路径在递归删除,shift+delect直接递归删除,或是直接没删不给显示了,不过不大可能毕竟系统这么多数据。


InputStream称为输入,是相互的,对我们来说,是程序输出给我们,对程序来说:是程序输出给我们。

OutputStream称为输出,是相互的,对我们来说,是我们输出给程序,对程序来说:是我们输入给程序。 

是相互的,你是输出我就是接收,也就是输入给我,反之亦然。我也刚接触有点拗口,要想想,但是多想想也就顺了,都是这样。


InputStrieam与OutputStrieam都是抽象类,不能实例化,想要使用使用下面的实现子类FileInputStrieam和FileOutputStrieam。InputStream和OutputStream有些方法是抽象的有些是实现了的。


没有什么特别好提的方法,什么断点的skip,返回还有多少没读,跳过,输出也一样,输入,关闭,清理缓存。为什么要关闭·?因为你不关闭,你会一直占用着这个文件,删不掉的,不知道其他操作会怎么滴。


为什么清理缓存?存在着一样的一种情况,硬盘在高速运转,你输入,一次输入一些,一会儿输入一些,硬盘会有个定位的“磁头”?会去定位那个文件,进行输入。


这个时候用到缓冲池,什么是缓冲池,我的理解是:缓冲池顾名思义,是缓冲减少压力,怎么个法子呢?出入到缓冲池,满了在输入到文件中,减少硬盘的工作量了。不拖他。


这个什么时候一次性提交给硬盘做,是有触发条件的,满了才输入,没满又要输入怎么办?flish清理缓存,帮你把最后的送过去。


这里的缓冲池,对硬盘减少了负荷,一次输入一点速度很快,如果很多就拖着硬盘速度,缓存,网页存在缓存,是为了加快速度。常量池也称缓存池还是什么啊。反正都是一个目的:做到更好~因为不好,所以会流失一下客户。


对了,输入和输出有8位和16位之分,为啥?16位是处理文字,8位处理数字,一个文字为双字也就是2个字节,八位应该是处理的不够好。经过实验八位也能输出文件和输入文字的,要用到一些措施,应该是做的没有16位好。


缓冲池在某些情况下,可能会运用,比如那消息队列,缓存技术,这些,我现在还没有运用,说不出运用在哪些地方,后面再有机会聊聊吧。


八位输入的花,用byte[]接收,在转换位String,注意字符集,不然乱码,utf配utf,windows下文本默认是ANSI,GBK可接收,输出,也文字String转换byte[],然后批量输出byte[],


我们的输出是覆盖式输出,怎么不覆盖进行输出呢,在FlieOutputStream(),参数中除了填写指明的路径,还在填写true,代表是追加式输出,


为什么收到的文字转换为字符串,要指明长度,因为不指明,批量输入的时候按照指明的长度就那些批量输入,直到没有,进行转换String时,会把剩下没有用到的一并转换,所以指明0,长度,来说明有多长,转多长


这些都是方法没什么好说的,本章完。

原创粉丝点击