高效I/O

花1K内存实现高效I/O的RandomAccessFile类

流过昼夜 提交于 2020-02-29 22:21:23
主体: 目前最流行的J2SDK版本是1.3系列。使用该版本的开发人员需文件随机存取,就得使用RandomAccessFile类。其I/O性能较之其它常用开发语言的同类性能差距甚远,严重影响程序的运行效率。 开发人员迫切需要提高效率,下面分析RandomAccessFile等文件类的源代码,找出其中的症结所在,并加以改进优化,创建一个"性/价比"俱佳的随机文件访问类BufferedRandomAccessFile。 在改进之前先做一个基本测试:逐字节COPY一个12兆的文件(这里牵涉到读和写)。 读 写 耗用时间(秒) RandomAccessFile RandomAccessFile 95.848 BufferedInputStream + DataInputStream BufferedOutputStream + DataOutputStream 2.935 我们可以看到两者差距约32倍,RandomAccessFile也太慢了。先看看两者关键部分的源代码,对比分析,找出原因。 1.1.[RandomAccessFile] public class RandomAccessFile implements DataOutput, DataInput { public final byte readByte() throws IOException { int ch = this