IO流
Yakir Niu
心如明镜台,时时勤拂拭
展开
-
缓冲流为何要配合字节数组的使用?
在查看缓冲流的源码的时候,我们会发现它在底层创建了一个8196长度的字节数组,利用这个数组去进行数据的交互.但是我们完全可以自己创建一个字节数组,对数据进行输入或输出,没必要再加上缓冲流啊?或者说,我们单纯使用缓冲流就可以用字节数组传输数据了,那为什么又要把这两个结合起来使用呢?其实,从结果上来说,两者结合起来效率其实是更高的.这里,我们从原理的角度解释一下:缓冲流是在缓冲区中创建了一个字节数组,缓冲区是在内存当中的,效率很高,它创建的这个字节数组是用来储存输出流等传递过来的数据的,直到储存到819原创 2020-09-16 23:06:21 · 1168 阅读 · 0 评论 -
try - catch finally中关闭资源时,为什么要加非空判断?
在IO流和Socket编程中,我们在最后总是要对资源进行关闭.这个关闭操作通常会放在finally中,以至于不管怎样都会被执行,但是对关闭流操作执行try - catch时,为什么都会加上一个非空的判断?因为如果某个资源为空,直接就会跳转至finally中,这时如果直接调用close方法,就会报出空指针异常的错误.只有资源不为空时,我们才可以调用close方法代码如下://try-catch的部分省略finally { if (bufferedOutputStream !=原创 2020-09-15 10:07:03 · 1332 阅读 · 0 评论 -
对比字节流和字符流的区别在转换流中的意义
首先声明几个重要点:1.转换流其实也是一种字符流;2.字符流其实就是字节流加编码方式;3.计算机中进行数据的交互,都是以字节流为载体的,字符流不可能进行传输.而转换流存在的意义就是实现字符流和字节流之间的转换.转换流有以下几种构造方法:InputStreamReader(InputStream in) :使用默认字符编码创建InputStreamReader对象InputStreamReader(InputStream in,String chatset) :使用指定的字符编码创建InputSt原创 2020-09-14 19:54:03 · 658 阅读 · 1 评论