第四次作业:文件的复制速度
2016-04-05 22:22
211 查看
本次我们学习了如何用字节流进行文件的复制,但由于字节复制速度问题,不太适合复制除了文本文档的一些大文件。所以,本次作业,我们就来改进如何去提高文件复制的效率。
Java实现文件拷贝其实质上就是使用java提供的三种文件流操作,字节流,字符流,二进制流。
字节流:FileInputStream 与 FileOutputStream,也就是老师上课所讲的内容,这个复制速度比较慢,字节流读取文件的单位为字节,对于英语字母(只占一个字节)不受任何影响,而对于中文文字在unicode编码为两个字节(或者以上?)则可能会造成影响。
字符流:FileReader 和 FileWriter,字符流读取文件的单位为字符,没有上述字节流的弊端,而且其提供缓冲区读取/写入,更加方便与高效。
二进制流:DataInputStream 和 DataOutputStream,二进制流本质上也属于字节流,但是它在读取/写入文件时把文件内容转化为二进制的方式读取/写入,不易出错而且极为高效,一般用于读取/写入视频等大文件信息。
所以,为了提升文件的复制速度,我们改用二进制流进行复制。代码如下:
通过测试,使用二进制流进行文件的复制速度,从运行程序到完成,不到一秒钟的时间。可以说是极大的提升了文件的复制速度。所以,以后在复制大文件时,采用二进制流会更加的高效与快捷。
本次作业使我对字节流与字符流的概念有了更加清晰的认识,也对程序优化方面有了一个笼统的概念,好程序不光需要正确,还要在保证正确的同时,尽可能的提升软件运行处理的速度,这样的软件才是一个好软件。
Java实现文件拷贝其实质上就是使用java提供的三种文件流操作,字节流,字符流,二进制流。
字节流:FileInputStream 与 FileOutputStream,也就是老师上课所讲的内容,这个复制速度比较慢,字节流读取文件的单位为字节,对于英语字母(只占一个字节)不受任何影响,而对于中文文字在unicode编码为两个字节(或者以上?)则可能会造成影响。
字符流:FileReader 和 FileWriter,字符流读取文件的单位为字符,没有上述字节流的弊端,而且其提供缓冲区读取/写入,更加方便与高效。
二进制流:DataInputStream 和 DataOutputStream,二进制流本质上也属于字节流,但是它在读取/写入文件时把文件内容转化为二进制的方式读取/写入,不易出错而且极为高效,一般用于读取/写入视频等大文件信息。
所以,为了提升文件的复制速度,我们改用二进制流进行复制。代码如下:
package fuzhiwenjian; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class copy { public static void main(String[] args) { FileOutputStream outputStream; try { outputStream = new FileOutputStream("b.mp3",true); FileInputStream inputStream = new FileInputStream("a.mp3"); DataInputStream dataInput = new DataInputStream(inputStream); DataOutputStream dataOutput = new DataOutputStream(outputStream); byte []wxj = new byte[1024]; int length = dataInput.read(wxj); while(length!=-1){ dataOutput.write(wxj,0,length); length = dataInput.read(wxj); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
通过测试,使用二进制流进行文件的复制速度,从运行程序到完成,不到一秒钟的时间。可以说是极大的提升了文件的复制速度。所以,以后在复制大文件时,采用二进制流会更加的高效与快捷。
本次作业使我对字节流与字符流的概念有了更加清晰的认识,也对程序优化方面有了一个笼统的概念,好程序不光需要正确,还要在保证正确的同时,尽可能的提升软件运行处理的速度,这样的软件才是一个好软件。
相关文章推荐
- 基于ZooKeeper的服务注册中心
- 经典矩阵问题
- jsp常用跳转方式
- 创建Android虚拟机
- Java Decorator
- 数据结构之栈(2)——多栈共享技术
- 4_6 师兄帮帮忙(UVa12412)(选做)
- 用Java实现线性表的顺序存储结构
- error C2265: '<Unknown>' : reference to a zero-sized array is illegal
- [查异常网]-20160405-我们到底为了什么钻研技术?
- 图解VC++工具栏和状态栏编程实例
- 上升子序列
- 2015 牌型种数
- PCIE BAR空间
- iOS 音频开发经验汇总
- struts2笔记11-OGNL
- 浅谈iOS沙盒目录
- 长江商业评论读书笔记
- SDWEBImage和collectionView的组合,以及collectionView的随意间距设置
- android 全透明式状态栏