java文件拷贝I/O优化

来源:百度知道 编辑:UC知道 时间:2024/06/26 03:57:16
使用FileInputStream和FileOutputStream来实现文件夹的拷贝,当文件比较少的时候还可以,如果文件比较多比较大的时候机器就会比较卡,而且放在GUI中会引起无响应。查看硬盘的读写速度最高17M/s左右,cpu占用率不高,在10%以下。我想能不能降低硬盘读写速率,我以前用的方法是读取5M数据后就sleep30毫秒,结果不理想,有时候拷贝速度比不sleep的还要快。有没有什么其他的办法呢?
byte[] bytes = new byte[8092];刚开始设置的是1024,现在改成的8092感觉效果还是不明显

二楼的, 我试了FileChannel,结果在拷贝一些大文件的时候会报io异常,是由于map的溢出引起的。而使用普通的拷贝的时候不会出现。

用nio里头的FileChannel,直接缓存模式可能效果好一点

对,就这样byte[] bytes = new byte[1024];弄个缓冲区就可以了,根据具体需要来设定这个缓冲区的大小。
这个缓冲区的意思就是每一次读取流中的字节内容的多少。1K=1024byte;1M=1024K;等等,这些你应该知道的。

可以设置每次读取字节的大小