FileInputStream和FileOutputStream字节流的两种读写方式效率对比
2016-09-11 14:27
507 查看
第一种读写方式:单个字节写入输出流
运行结果(拷贝音乐文件所需时间):
复制完成,共花费:44599毫秒
第二种读写方式:先将数据写入缓冲区,等缓冲区中的数据满了,再将缓冲区中的数据写入对应的输出流中
运行结果(拷贝音乐文件所需时间):
复制完成,共花费:101毫秒
总结:由上面两种文件读写方式的对比可以看出,第二种方式的读写效率更高一些,可以作为大型数据文件的复制读写的操作。
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.stream.FileImageInputStream; public class FileInputStreamOut { public static void main(String[] args) { try { FileCopyUtil.copyFile(new File("H:\\Haige\\陈翔 - 烟火.mp3"), new File("H:\\gei\\陈翔 - 烟火.mp3")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class FileCopyUtil { public static void copyFile(File src,File dst)throws IOException//从原文件拷贝到目标文件 { FileInputStream fis=new FileInputStream(src);//到指定的文件中读取数据 FileOutputStream fos=new FileOutputStream(dst);//指定文件输出数据 long time1=System.currentTimeMillis(); int data=-1; while((data=fis.read())!=-1) { fos.write(data);//往要输出文件写数据 } fos.close(); fis.close(); long time2=System.currentTimeMillis(); System.out.println("复制完成,共花费:"+(time2-time1)+"毫秒"); } }
运行结果(拷贝音乐文件所需时间):
复制完成,共花费:44599毫秒
第二种读写方式:先将数据写入缓冲区,等缓冲区中的数据满了,再将缓冲区中的数据写入对应的输出流中
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.stream.FileImageInputStream; public class FileInputStreamOut { public static void main(String[] args) { try { FileCopyUtil.copyFile(new File("H:\\Haige\\陈翔 - 烟火.mp3"), new File("H:\\gei\\陈翔 - 烟火.mp3")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class FileCopyUtil { public static void copyFile(File src,File dst)throws IOException//从原文件拷贝到目标文件 { FileInputStream fis=new FileInputStream(src);//到指定的文件中读取数据 FileOutputStream fos=new FileOutputStream(dst);//指定文件输出数据 byte []buf=new byte[1024*1024];//创建1M大小的缓冲区,用来存放输入流中的字节 int len=0;//用来保存实际读到的字节数 long time1=System.currentTimeMillis(); while((len=fis.read(buf))!=-1)//没有读到文件的末尾 { fos.write(buf, 0, len);//实际读到的字节数 } fos.close(); fis.close(); long time2=System.currentTimeMillis(); System.out.println("复制完成,共花费:"+(time2-time1)+"毫秒"); } }
运行结果(拷贝音乐文件所需时间):
复制完成,共花费:101毫秒
总结:由上面两种文件读写方式的对比可以看出,第二种方式的读写效率更高一些,可以作为大型数据文件的复制读写的操作。
相关文章推荐
- Java多线程13:读写锁和两种同步方式的对比
- (六)两种方式将一个文件的内容复制到另一个文件(第二种方式效率更高,第一种一个字符一个字符的读写,第二种一个数组一个数组的读写)
- 读写锁和两种同步方式的对比
- Java基础之IO流,以字节流的方式操作读写文件FileOutputStream和FileInputStream的使用
- Java多线程13:读写锁和两种同步方式的对比
- Java多线程13:读写锁和两种同步方式的对比
- 复习笔记10 switch 编译器优化的两种方式 和if的效率对比
- apache rewrite在per-server和per-dir两种模式下的效率对比
- 【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!
- xml解析方式与效率对比
- 【转】oracle 字符集乱码解决-.Net 中读写Oracle数据库常用两种方式:OracleClient和OleDb
- .Net 中读写Oracle数据库的两种方式
- SQL2005生成系列号(行号)两种方式效率比较
- 两种数据库二进制字段存取控制方式的对比
- php include加载文件两种方式效率比较
- php include加载文件两种方式效率比较
- 10—(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!
- 生成大量随机字符串不同实现方式的效率对比
- mysql两种查询方式对比--子查询与join查询
- 生成大量随机字符串不同实现方式的效率对比