JAVA IO操作的总结 和速度实验
Posted whycft
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA IO操作的总结 和速度实验相关的知识,希望对你有一定的参考价值。
IO两种操作的区别
字节操作 |
byte类型操作,所有数表示为byte数组 |
读取输出要先转换成byte类型,才能进一步转换为字符串 |
不会运用到缓存 |
常用于处理二进制数据 |
|
字符操作 |
操作character类型,所有数表示为character数组 |
可以直接读取输出字符串 |
需要用到缓存 |
常用于处理文本数据 |
|
设计程序测试字节流和字符流的读写差别
输出1999999个String来测试字节流的写入速度
输出1999999个String来测试字符流的写入速度
a) 分别使用字节操作与字符操作两种方式将对象写入硬盘,记录汇报两种方式的时间与所占硬盘空间
所占硬盘空间为大约1.17GB 两者相差很小
经测试,字符流的写入速度更快,快了大概十倍,且两者所占的内存相差很小
b) 分别使用字节操作与字符操作两种方式将硬盘数据读入内存,记录两种方式的时间消耗
测试字符流单字节读取和数组读取所需时间
测试字节流单字节和字节数组的读取速度
结果
可见字符流的读取速度比字节流要快,而且用数组可以大幅度加快读取速度
c) 在读取与写入时使用缓存(buffered stream),比较缓存方式的优劣,并设计场景体现出缓存方式的优势
测试字节缓存流读写文件所需时间(12MB的文件)
测试字节流读写文件所需的时间
得出的时间结果:
但是使用字符流和字符缓存流时,得到的结果是相反的
我认为是因为字符流本来就用了缓存区,经过了两次缓存区,效率反而更低了。
可看出,相比于不使用缓存,使用缓存后读取速度更快
使用场景:当要读写大文件,且电脑性能好的时候,可以大量使用缓存来提高读写速度。
d) 请使用C/C++(或者任意支持little-Endian的语言)完成题目2(b)中写入的两种文件的正确读取,并记录两种方式的时间消耗
字符流读写:
所使用的时间
可以看出,c语言的读写效率更高
结论
1.字符流基于字节流,字符流通过使用缓存等提升了读写速度。
2.在相同条件下,字节流与字符流的效率比约为1:20;,字符流是建立在字节流的基础上的,但是字符流使用了缓存,提高了效率;
3.应用场景:(1)字符流常用于处理文本数据,字节流常用于处理二进制数据
(2)在读写文件需要对文本格式化处理时使用字符流,仅仅是读写数据适合用字节流
4.可以使用数组读写的方式大幅度提高速度。
以上是关于JAVA IO操作的总结 和速度实验的主要内容,如果未能解决你的问题,请参考以下文章