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

代码:

  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. C字符串输入输出函数

    下面就几个常用的字符串输入输出函数做个小小的总结TAT 使用时添加头文件:#include<stdio.h>. scanf("格式控制字符串",变量地址列表):(pri ...

  2. AFNetworking 内部详解

    AFNetworking 是一个适用于IOS 和 Mac OSX 两个平台的网络库,他是在Foundation URL Loading System  基础上进行的一套封装 ,并提供了丰富的API接口 ...

  3. seajs加载angularjs

    angularjs是自动完成模块的控制的,而seajs加载模块是异步的,所以不做修改,直接seajs加载angularjs会出错.            在这里讲下自己的解决方法 一.需要把ng-ap ...

  4. 对java面向对象的初识

    我其实一直想写点东西练练自己文笔,今天写下这篇技术类型的文章也没有一个好的格式和章法,但万事开头难,那么就从面向对象开始. 我们大部分人都知道互联网软件的存在,时刻影响了我们的现实生活,那么面向对象的 ...

  5. SQL*Plus快速入门

    连接数据库sqlplus hr@\"//mymachine.mydomain:port/MYDB\" --连接到MYDB数据库的一个HR数据集里sqlplus hr@MYDB -- ...

  6. 深入解析MySQL视图view

    阅读目录---深入解析MySQL视图view 创建视图 查看视图 视图的更改 create or replace view alter DML drop 使用with check option约束 嵌 ...

  7. MYSQL设置远程账户登陆总结

    为了给MYSQL用户设置远程连接权限,经历的种种错误总结 ERROR 2003 (HY00 原因是MySQL考虑到安全因素,默认配置只让从本地登录 打开 /etc/mysql/my.cnf 文件,找到 ...

  8. node.js—express+ejs、express+swig、

    安装:npm install -g express-generator 普通express 网站 创建:express testWeb 安装依赖:npm install 修改app.js文件并运行 找 ...

  9. WPF 自定义ColorDialog DropDownCustomColorPicker

    今天分享一个 WPF 版的ColorDialog,该控件源自 这里,不过笔者已经该控件做了大量的修改工作,以适应自己的产品需求,闲话少说,先看看效果图: 1.DropDownCustomColorPi ...

  10. IDEA下使用maven构建web项目(SpringMVC+Mybatis整合)

    需求背景:由于最近总是接到一些需求,需要配合前端团队快速建设移动端UI应用或web应用及后台业务逻辑支撑的需求,若每次都复用之前复杂业务应用的项目代码,总会携带很多暂时不会用到的功能或组件,这样的初始 ...