与文件流相比,缓冲流复制文件更快

代码:

  1. package Homework;
  2. import java.io.BufferedOutputStream;
  3. import java.io.File;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.text.SimpleDateFormat;
  8. /**
  9. * 1 )将"今年是反法西斯胜利70周年,举国欢庆,所以要放假啦" 字符串
  10. * 使用文件字符输出流 写入到oldhappy.dt文件中,复写10000行,
  11. * 要求换行 在文件的开头写入当前的时间 精确到毫秒在文件的结尾也写入当前的时间 精确到毫秒。
  12. * @author Administrator
  13. *
  14. */
  15. public class Test1 {
  16. public static void main(String[] args) {
  17. copy1();
  18. copy2();
  19. }
  20. //使用文件流复制文件
  21. public static void copy1(){
  22. FileOutputStream fos=null;
  23. try {
  24. //创建输入流,并创建要写入的文件oldhappy.dt
  25. fos=new FileOutputStream(new File("oldhapy.dt"));
  26. //获取写入前的当前时间
  27. long l=System.currentTimeMillis();
  28. //格式化时间
  29. SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
  30. String time=s.format(l);
  31. //写入时间
  32. fos.write((time+"\r\n").getBytes());
  33. //写入要写的内容,并换行
  34. // \r\n表示换行
  35. for(int i=1;i<=10000;i++){
  36. fos.write("今年是反法西斯胜利70周年,举国欢庆,所以要放假啦\r\n".getBytes());
  37. fos.flush();
  38. }
  39. //获取写完后 时间
  40. long l2=System.currentTimeMillis();
  41. String time2=s.format(l2);
  42. fos.write(time2.getBytes());
  43. //复制文件的时间
  44. System.out.println("使用文件流复制文件时间:"+(l2-l));
  45. } catch (FileNotFoundException e) {
  46. // TODO Auto-generated catch block
  47. e.printStackTrace();
  48. } catch (IOException e) {
  49. // TODO Auto-generated catch block
  50. e.printStackTrace();
  51. }finally {
  52. if(fos!=null){
  53. try {
  54. fos.close();
  55. } catch (IOException e) {
  56. // TODO Auto-generated catch block
  57. e.printStackTrace();
  58. }
  59. }
  60. }
  61. }
  62. //使用缓冲流复制文件
  63. public static void copy2(){
  64. BufferedOutputStream bos=null;
  65. try {
  66. bos=new BufferedOutputStream(new FileOutputStream("newhapy.dt"));
  67. long l=System.currentTimeMillis();
  68. //格式化时间
  69. SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
  70. String time=s.format(l);
  71. //写入时间
  72. bos.write((time+"\r\n").getBytes());
  73. //写入要写的内容,并换行
  74. // \r\n表示换行
  75. for(int i=1;i<=10000;i++){
  76. bos.write("今年是反法西斯胜利70周年,举国欢庆,所以要放假啦\r\n".getBytes());
  77. bos.flush();
  78. }
  79. //获取写完后 时间
  80. long l2=System.currentTimeMillis();
  81. String time2=s.format(l2);
  82. bos.write(time2.getBytes());
  83. //复制文件的时间
  84. System.out.println("使用缓冲流复制文件时间:"+(l2-l));
  85. } catch (FileNotFoundException e) {
  86. // TODO Auto-generated catch block
  87. e.printStackTrace();
  88. } catch (IOException e) {
  89. // TODO Auto-generated catch block
  90. e.printStackTrace();
  91. }finally {
  92. if(bos!=null){
  93. try {
  94. bos.close();
  95. } catch (IOException e) {
  96. // TODO Auto-generated catch block
  97. e.printStackTrace();
  98. }
  99. }
  100. }
  101. }
  102. }

运行结果比较:

Java IO流之【缓冲流和文件流复制文件对比】的更多相关文章

  1. 1.java.io包中定义了多个流类型来实现输入和输出功能,

    1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分 类,按功能分为:(C),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(G)   A.输入流和输出流 B ...

  2. Java.io下的方法是对磁盘上的文件进行磁盘操作

    File类(java.io.*)可表示一个文件,也有可能是一个目录(在JAVA中文件和目录都属于这个类中,而且区分不是非常的明显). Java.io下的方法是对磁盘上的文件进行磁盘操作,但是无法读取文 ...

  3. Java使用文件通道复制文件

    两种文件通道复制文件方式的性能比较 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IO ...

  4. 使用文件流与使用缓冲流完成文件的复制操作性能对比,文件流 FileInputStream FileOutputStream 缓冲流: BufferedInputStream BufferedOutputStream

    package seday06; import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOExc ...

  5. Java IO学习笔记(四)打印流

    1.只有输出流才有打印流:PrintWriter和PrintStream分别针对字符和字节,提供了重载的print,Println方法用于多种数据类型的输出.PrintWriter和PrintStre ...

  6. java io 学习笔记(三) 字符流读写

    1.字符流读取 字符流读取的所有类都是从Reader这个超类继承的,都是用于读取字符的,这些类分别是InputSteamReader(从字符流读取).FileReader(继承与InputStream ...

  7. Java IO学习笔记(五)对象流

    1.Object流:直接将Object写入或读出. 2.序列化:将Object直接转化成字节流写到硬盘或网络上. 3.如果想把一个对象转化成字节流,该对象的实体类必须得实现Serializable接口 ...

  8. Java IO学习笔记(三)转换流、数据流、字节数组流

    转换流 1.转换流:将字节流转换成字符流,转换之后就可以一个字符一个字符的往程序写内容了,并且可以调用字符节点流的write(String s)方法,还可以在外面套用BufferedReader()和 ...

  9. Java中的字节流,字符流,字节缓冲区,字符缓冲区复制文件

     一:创建方式 1.建立输入(读)对象,并绑定数据源 2.建立输出(写)对象,并绑定目的地 3.将读到的内容遍历出来,然后在通过字符或者字节写入 4.资源访问过后关闭,先创建的后关闭,后创建的先关闭 ...

  10. IO流----读取文件,复制文件,追加/插入文件

    文件结构 读取文件 第一种方式 public class Test { public static void main(String[] args) throws IOException { // 最 ...

随机推荐

  1. 浅析JS中的模块规范AMD和CMD

    一.AMD AMD就只有一个接口:define(id?,dependencies?,factory); 它要在声明模块的时候制定所有的依赖(dep),并且还要当做形参传到factory中,像这样: d ...

  2. 八种创建等高列布局【出自w3c】

    高度相等列在Web页面设计中永远是一个网页设计师的需求.如果所有列都有相同的背景色,高度相等还是不相等都无关紧要,因为你只要在这些列的父元素中设置一个背景色就可以了.但是,如果一个或多个列需要单独设置 ...

  3. 【DP系列学习一】简单题:kickstart2017 B.vote

    https://code.google.com/codejam/contest/6304486/dashboard#s=p1 这是一道简单的dp,dp[i][j]代表A的voter为i,B的voter ...

  4. jquery判断文本框输入的是非数字内容(交流QQ群:452892873)

    isNaN($(this).val())==false   输入的是数字, isNaN($(this).val())==true  输入的是非数字内容

  5. java集合系列

    工作以来,一直对java集合理解的不够全面,不够深入,就是常用的ArrayList/HashMap/Set/List,有时候会用一下LinkedList.一时兴起,可能对TreeSet,HashSet ...

  6. vlan内部与外部某终端之间的通信

    实现虚拟局域网外部终端与内部终端之间的通信,即实现pc3与pc1和pc4之间的通信. 把交换机上的默认VLAN1改成VLAN2(红色字体命令). 各vlan内部终端的通信,是通过vlan ID来实现的 ...

  7. SSH 远程执行任务

    SSH 是 Linux 下进行远程连接的基本工具,但是如果仅仅用它来登录那可是太浪费啦!SSH 命令可是完成远程操作的神器啊,借助它我们可以把很多的远程操作自动化掉!下面就对 SSH 的远程操作功能进 ...

  8. Java学习笔记——浅谈数据结构与Java集合框架(第一篇、List)

    横看成岭侧成峰,远近高低各不同.不识庐山真面目,只缘身在此山中. --苏轼 这一块儿学的是云里雾里,咱们先从简单的入手.逐渐的拨开迷雾见太阳.本次先做List集合的三个实现类的学习笔记 List特点: ...

  9. 在web项目启动时,使用监听器来执行某个方法

    在web项目中有很多时候需要在项目启动时就执行一些方法,而且只需要执行一次,比如:加载解析自定义的配置文件.初始化数据库信息等等,在项目启动时就直接执行一些方法,可以减少很多繁琐的操作. 这里写了个简 ...

  10. <<、>>、>>>移位操作

    <<,有符号左移位,将运算数的二进制整体左移指定位数,低位用0补齐. int leftShift = 10; System.out.println("十进制:" + l ...