1. import java.io.BufferedOutputStream;
  2. import java.io.File;
  3. import java.io.FileOutputStream;
  4. import java.io.FileWriter;
  5. import java.nio.ByteBuffer;
  6. import java.nio.channels.FileChannel;
  7. /**
  8. * 测试各种写文件的方法性能。
  9. *
  10. * @author 老紫竹 JAVA世纪网(java2000.net)
  11. *
  12. */
  13. public class T {
  14. public static void main(String[] args) {
  15. FileOutputStream out = null;
  16. FileOutputStream outSTr = null;
  17. BufferedOutputStream Buff = null;
  18. FileWriter fw = null;
  19. int count = 1000000;// 写文件行数
  20. try {
  21. byte[] bs = "测试java 文件操作/r/n".getBytes();
  22. out = new FileOutputStream(new File("C:/add.txt"));
  23. long begin = System.currentTimeMillis();
  24. for (int i = 0; i < count; i++) {
  25. out.write(bs);
  26. }
  27. out.close();
  28. long end = System.currentTimeMillis();
  29. System.out.println("FileOutputStream执行耗时:" + (end - begin) + " 豪秒");
  30. outSTr = new FileOutputStream(new File("C:/add0.txt"));
  31. Buff = new BufferedOutputStream(outSTr);
  32. long begin0 = System.currentTimeMillis();
  33. for (int i = 0; i < count; i++) {
  34. Buff.write(bs);
  35. }
  36. Buff.flush();
  37. Buff.close();
  38. long end0 = System.currentTimeMillis();
  39. System.out.println("BufferedOutputStream执行耗时:" + (end0 - begin0) + " 豪秒");
  40. fw = new FileWriter("C:/add2.txt");
  41. long begin3 = System.currentTimeMillis();
  42. for (int i = 0; i < count; i++) {
  43. fw.write("测试java 文件操作/r/n");
  44. }
  45. fw.flush();
  46. fw.close();
  47. long end3 = System.currentTimeMillis();
  48. System.out.println("FileWriter执行耗时:" + (end3 - begin3) + " 豪秒");
  49. long begin4 = System.currentTimeMillis();
  50. String path = "C:/add3.txt";
  51. ByteBuffer bb = ByteBuffer.wrap(bs);
  52. FileChannel out2 = new FileOutputStream(path).getChannel();
  53. for (int i = 0; i < count; i++) {
  54. out2.write(bb);
  55. bb.rewind();
  56. }
  57. out2.close();
  58. long end4 = System.currentTimeMillis();
  59. System.out.println("FileChannel执行耗时:" + (end4 - begin4) + " 豪秒");
  60. } catch (Exception e) {
  61. e.printStackTrace();
  62. } finally {
  63. try {
  64. fw.close();
  65. Buff.close();
  66. outSTr.close();
  67. out.close();
  68. } catch (Exception e) {
  69. e.printStackTrace();
  70. }
  71. }
  72. }
  73. }

在我的笔记本上,运行结果如下

FileOutputStream执行耗时:4891 豪秒

BufferedOutputStream执行耗时:78 豪秒

FileWriter执行耗时:438 豪秒

FileChannel执行耗时:2812 豪秒

当然最终生成的文件都是正确的

总结:

BufferedOutputStream 由于有缓冲,性能明显好

FileOutputStream 性能最差,因为其每次都写入字节。

FileWriter 性能很一般

FileChannel使用了nio,但如果没有缓冲,必能太指望性能了

转载于:https://www.cnblogs.com/jpa2/archive/2011/06/03/2527572.html

java写文件方法之比较相关推荐

  1. java 写文件 0x0d_Java的文件读写操作 转

    目录: file内存----输入流----程序----输出流----file内存 java中多种方式读文件 判断文件是否存在不存在创建文件 判断文件夹是否存在不存在创建文件夹 java 写文件的三种方 ...

  2. java 写文件 权限不够_教你解决Linux系统中JAVA创建文件后权限不足的问题

    在作业中,项目使用文件上传. 这个功能很常见. 当Kai Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件. 它是怎么发生的? 经过许多问题之后,事实证明这 ...

  3. Java写文件不覆盖原内容

    使用Java写文件不覆盖原有内容 public void writeToTXT(String str){FileOutputStream o = null;String path="Your ...

  4. java写文件追加的方法_java写文件追加的方法

    BufferedWriter bw = new BufferedWriter(new FileWriter(new File("e:\\testout\\","1111. ...

  5. java 写文件的三种方法比较

    原文:http://www.cnblogs.com/yezhenhan/archive/2012/09/10/2678690.html import java.io.File; import java ...

  6. JAVA追加写文件方法

    import java.io.*; public class ReadFile{public static void main(String []args)throws IOException{/** ...

  7. java 写文件 flush_Java FileOutputStream flush()方法

    Java FileOutputStream flush()方法 java.io.FilterOutputStream.flush() 用于刷新此输出流,并强制将所有缓冲的输出字节写出到该流中. 1 语 ...

  8. java 写文件 异常 磁盘空间满_系统磁盘空间满的一个问题

    我们的集成环境如果磁盘空间满,一般情况下可以通过删除log或者多余的文件来解决,但有时候,这种方法是无法解决的.以上次碰到情况为例: 服务器10.2.5.4磁盘空间满,致使某核心无法正常运行.于是登陆 ...

  9. java 写文件filewriter_使用FileWriter写文件

    package textMyself; //使用FileWriter写文件 import java.io.FileNotFoundException; import java.io.FileReade ...

最新文章

  1. 到底有哪些副业适合程序员或产品经理?
  2. 13_Android的生命周期
  3. python虚拟人脸生成_GitHub - 597111463/seeprettyface-generator-yellow: 这是一个用StyleGAN训练出的黄种人人脸生成器...
  4. vi - a linux command
  5. Thrift 教程 开发 笔记 原理 资料 使用 范例 示例 应用
  6. 《深入理解java虚拟机》第1章 走近Java
  7. python-json模块
  8. python降噪突出人声_KlipC带您探寻——华为全新智慧动态降噪耳机
  9. (转)“跑批”发展编年史
  10. 用Java制作一个家庭收支记账软件
  11. 电子电路原理面试题目及答案(一)
  12. 清理outlook缓存
  13. 经典算法问题-01-八皇后
  14. Tensorflow Dataset API 入门
  15. 腾讯启动校园招聘人才
  16. R语言将字符串中的数字提取出来作为值
  17. 数据库之 MySQL—— 50个查询系列
  18. Web前端:古诗排版网页案例设计
  19. 泉州计算机编程培训班,泉州编程小学生培训班
  20. 由iphone12说说激光雷达 FMCW激光雷达

热门文章

  1. 业界丨《自然》:中国打响AI人才争夺战
  2. 集成学习(Bagging和AdaBoost和随机森林(random forest))
  3. 世界半导体集成电路发展史(超细、超全)
  4. 《自然》评价“天问一号”成功发射—— 全球深空探索走进新时代
  5. 结构化数据不应该被人工智能忘之脑后 !
  6. 谁在引领中国制造?中国智能制造发展解析
  7. 【科普】AI的分类与演进
  8. 斯坦福大学科学家研发微型植入式神经刺激器
  9. 看懂GE Predix ,就看懂了工业互联网
  10. IBM用量子计算机成功模拟分子,登上《自然》封面