字节流与字符流在用于文件复制时效率差距较大

分别对文件夹下的txt文件,jpg文件与mp4文件进行复制粘贴操作,并使用日期类进行运行时间记录,比较几种方法的效率。

public class copy {File filea = new File("E:/testfile/filename1/a");File fileb = new File("E:/testfile/filename1/b");
//    FileInputStream fis = new FileInputStream(filea);
public static void main(String[] args) throws IOException {File filea = new File("E:/testfile/filename1/a");File fileb = new File("E:/testfile/filename1/b");
//    FileInputStream fis = new FileInputStream(filea);
//    FileOutputStream fos = new FileOutputStream(fileb);copy copy = new copy();String[] strings = filea.list();int by;for (String str:strings){if (str.endsWith(".txt")){long timestart = System.currentTimeMillis();copy.dosomthing3(str);long timeEnd = System.currentTimeMillis();System.out.println(timeEnd-timestart);}if (str.endsWith(".jpg")){long timestart = System.currentTimeMillis();copy.dosomthing3(str);long timeEnd = System.currentTimeMillis();System.out.println(timeEnd-timestart);}if (str.endsWith(".mp4")){long timestart = System.currentTimeMillis();copy.dosomthing3(str);long timeEnd = System.currentTimeMillis();System.out.println(timeEnd-timestart);}}
}
public void dosomthing(String str) throws IOException {int by;FileInputStream fis = new FileInputStream(filea.toString()+"/"+str);File fileTemp = new File(fileb.toString()+"/"+str);FileOutputStream fos = new FileOutputStream(fileTemp);while ((by=fis.read())!=-1){fos.write(by);fos.flush();}
}
public void dosomthing1(String str) throws IOException{BufferedInputStream bis = new BufferedInputStream(new FileInputStream(filea.toString()+"/"+str));BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(fileb.toString()+"/"+str));byte[] bys = new byte[1024];int len;while ((len=bis.read(bys))!=-1){bos.write(bys,0,len);}
}
public void dosomthing2(String str) throws IOException{BufferedReader br = new BufferedReader(new FileReader(filea.toString()+"/"+str));BufferedWriter bw = new BufferedWriter(new FileWriter(fileb.toString()+"/"+str));char[] chs = new char[1024];int len;while ((len= br.read(chs))!=-1){bw.write(chs,0,len);}
}
public void dosomthing3(String str) throws IOException{char[] chs = new char[1024];FileReader fr = new FileReader(filea.toString()+"/"+str);FileWriter fw = new FileWriter(fileb.toString()+"/"+str);int len;while ((len=fr.read(chs))!=-1){fw.write(chs,0,len);}
}
}

使用字节流时

可以看出,仅在复制小体量以kb为单位的txt文件时耗时较小,在复制mp4文件时所需时间已经达到一个无法接受的程度

使用字节缓冲流时

在复制txt文件时由于一次需读取大量文件内容因此若文本文件的二进制数据小于缓冲池大小时,字节流相对好用,但在大型文件的复制上,还是字节缓冲流效率高

使用字符缓冲流时

对于小型文件的读写速度很快,但在超过1Mb的文件读写速率上远不如字节缓冲流

使用字符文件流时

对于文件的读写速度甚至不如字符缓冲流

总体而言,在需要进行文件复制应当优先选择字节缓冲流

字节流与字符流对文件复制的效率相关推荐

  1. 使用字节流和字符流对文件进行操作

    本文比较详细的记录了使用使用字节流和字符流对文件进行写入,读取,复制的操作 1.字节流 package com.yzy.io;import java.io.File; import java.io.F ...

  2. Java字节流与字符流的区别和执行效率

    区别: 1.字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的 2.字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是 ...

  3. 【java作业】2、 编写两个函数,分别使用字节流、字符流实现文件的拷贝;点击按钮,将第三个文本框的字符串的值设置为第一个文本框的字符串+第二个文本框的字符串。

    拷贝文件 : public static void copy1(String a,String b) throws IOException {FileInputStream input = new F ...

  4. java语言中定义的字节输出流_Java语言中的输入输出流包括字节流、字符流、文件流、对象流以及线程之间通信的管道流,【 】包中的类...

    [单选题]肥胖是体内中性脂肪过多积聚的表现,超过标准体重多少者为肥胖 A. 超过标准体重10%以上 B. 超过标准体重15%以上 C. 超过标准体重20%以上 D. 超过标准体重25%以上 E. 超过 ...

  5. 使用字符流 创建文件 写入文件 复制文件

    import java.io.*; /**    * 使用字符流创建文件复制文件  * 在盘符中文件夹  * 在文件夹中添加文件  * 在文件中写文字  *   复制文件  * */ public c ...

  6. python字节流和字符流_字符流与字节流

    [一]写在前面 简单总结一下分别用(一直混淆的)字节流or字符流读写文件. [二]字节流 2.1 字节流介绍 程序中的输入输出都是以流的形式保存的(输入流or输出流),流中保存的实际上全都是字节(一个 ...

  7. 字节流和字符流复制文件内容实例

    字节流和字符流复制文件内容实例 字节流: import java.io.File; import java.io.FileInputStream; import java.io.FileOutputS ...

  8. java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝

    接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...

  9. 字节流转化为文件流_JAVA IO分析一:File类、字节流、字符流、字节字符转换流...

    因为工作事宜,又有一段时间没有写博客了,趁着今天不是很忙开始IO之路:IO往往是我们忽略但是却又非常重要的部分,在这个讲究人机交互体验的年代,IO问题渐渐成了核心问题. 一.File类 在讲解File ...

最新文章

  1. CocoaPods安装及使用《转》
  2. 网站推广过程中如遇网站降权应从网站推广中哪些细节着手分析?
  3. 楼燚(yì)航的blog URL
  4. 【转】ubuntu,你改变了我的人生
  5. 请写出sfr和sbit的语句格式_习题_C51语言答案
  6. javascript中的call()和apply()方法 - 原创实例
  7. Java描述设计模式(20):命令模式
  8. 与熊论道为什么解码不了_楼上熊孩子瞎蹦跳,楼下邻居投诉无果,一招吓哭“熊一家”...
  9. SAP License:CKMLCP运行物料帐时单个物料冲突无法运行
  10. PAT甲级1091 Acute Stroke【三维bfs】
  11. 工作流系统之三十四 集成用户系统
  12. OpenCV-图像处理(05、图像混合)
  13. leetcode blind 75
  14. 批量将多个 Word 文档合并成一个 Word 文件
  15. 代价地图、局部规划器调参说明
  16. 商品进销差价_商品进销差价如何计算及账务处理怎么做?
  17. 网页设计-公用导航栏
  18. 生成android使用的BKS证书
  19. Pair Project
  20. point-wise element-wise

热门文章

  1. 【帆软FR】Echarts图表方案
  2. 产销平衡的运输问题上机实验matlab_实验报告——运输问题
  3. 2014ACM/ICPC亚洲区广州站- HDU-5127~5137,B(暴力+几何)E(签到水题)K(Dijkstra板子)
  4. python人工智能招聘-SiKi学院Python人工智能讲师招聘
  5. 聊聊找AI算法岗工作
  6. android studio 导入类快捷键,关于ide:在Android Studio中自动导入所有内容的快捷方式是什么?...
  7. Selenium驱动firefox爬取今日头条并存放在MySQL数据库中
  8. 试用补单流程,商家如何通过试用进行补单,通过试用补单的好处优势
  9. 医药采购之采购单明细添加查询
  10. python 复数补充