java写文件方法之比较
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.FileWriter;
- import java.nio.ByteBuffer;
- import java.nio.channels.FileChannel;
- /**
- * 测试各种写文件的方法性能。
- *
- * @author 老紫竹 JAVA世纪网(java2000.net)
- *
- */
- public class T {
- public static void main(String[] args) {
- FileOutputStream out = null;
- FileOutputStream outSTr = null;
- BufferedOutputStream Buff = null;
- FileWriter fw = null;
- int count = 1000000;// 写文件行数
- try {
- byte[] bs = "测试java 文件操作/r/n".getBytes();
- out = new FileOutputStream(new File("C:/add.txt"));
- long begin = System.currentTimeMillis();
- for (int i = 0; i < count; i++) {
- out.write(bs);
- }
- out.close();
- long end = System.currentTimeMillis();
- System.out.println("FileOutputStream执行耗时:" + (end - begin) + " 豪秒");
- outSTr = new FileOutputStream(new File("C:/add0.txt"));
- Buff = new BufferedOutputStream(outSTr);
- long begin0 = System.currentTimeMillis();
- for (int i = 0; i < count; i++) {
- Buff.write(bs);
- }
- Buff.flush();
- Buff.close();
- long end0 = System.currentTimeMillis();
- System.out.println("BufferedOutputStream执行耗时:" + (end0 - begin0) + " 豪秒");
- fw = new FileWriter("C:/add2.txt");
- long begin3 = System.currentTimeMillis();
- for (int i = 0; i < count; i++) {
- fw.write("测试java 文件操作/r/n");
- }
- fw.flush();
- fw.close();
- long end3 = System.currentTimeMillis();
- System.out.println("FileWriter执行耗时:" + (end3 - begin3) + " 豪秒");
- long begin4 = System.currentTimeMillis();
- String path = "C:/add3.txt";
- ByteBuffer bb = ByteBuffer.wrap(bs);
- FileChannel out2 = new FileOutputStream(path).getChannel();
- for (int i = 0; i < count; i++) {
- out2.write(bb);
- bb.rewind();
- }
- out2.close();
- long end4 = System.currentTimeMillis();
- System.out.println("FileChannel执行耗时:" + (end4 - begin4) + " 豪秒");
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- try {
- fw.close();
- Buff.close();
- outSTr.close();
- out.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- }
在我的笔记本上,运行结果如下
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写文件方法之比较相关推荐
- java 写文件 0x0d_Java的文件读写操作 转
目录: file内存----输入流----程序----输出流----file内存 java中多种方式读文件 判断文件是否存在不存在创建文件 判断文件夹是否存在不存在创建文件夹 java 写文件的三种方 ...
- java 写文件 权限不够_教你解决Linux系统中JAVA创建文件后权限不足的问题
在作业中,项目使用文件上传. 这个功能很常见. 当Kai Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件. 它是怎么发生的? 经过许多问题之后,事实证明这 ...
- Java写文件不覆盖原内容
使用Java写文件不覆盖原有内容 public void writeToTXT(String str){FileOutputStream o = null;String path="Your ...
- java写文件追加的方法_java写文件追加的方法
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("e:\\testout\\","1111. ...
- java 写文件的三种方法比较
原文:http://www.cnblogs.com/yezhenhan/archive/2012/09/10/2678690.html import java.io.File; import java ...
- JAVA追加写文件方法
import java.io.*; public class ReadFile{public static void main(String []args)throws IOException{/** ...
- java 写文件 flush_Java FileOutputStream flush()方法
Java FileOutputStream flush()方法 java.io.FilterOutputStream.flush() 用于刷新此输出流,并强制将所有缓冲的输出字节写出到该流中. 1 语 ...
- java 写文件 异常 磁盘空间满_系统磁盘空间满的一个问题
我们的集成环境如果磁盘空间满,一般情况下可以通过删除log或者多余的文件来解决,但有时候,这种方法是无法解决的.以上次碰到情况为例: 服务器10.2.5.4磁盘空间满,致使某核心无法正常运行.于是登陆 ...
- java 写文件filewriter_使用FileWriter写文件
package textMyself; //使用FileWriter写文件 import java.io.FileNotFoundException; import java.io.FileReade ...
最新文章
- 到底有哪些副业适合程序员或产品经理?
- 13_Android的生命周期
- python虚拟人脸生成_GitHub - 597111463/seeprettyface-generator-yellow: 这是一个用StyleGAN训练出的黄种人人脸生成器...
- vi - a linux command
- Thrift 教程 开发 笔记 原理 资料 使用 范例 示例 应用
- 《深入理解java虚拟机》第1章 走近Java
- python-json模块
- python降噪突出人声_KlipC带您探寻——华为全新智慧动态降噪耳机
- (转)“跑批”发展编年史
- 用Java制作一个家庭收支记账软件
- 电子电路原理面试题目及答案(一)
- 清理outlook缓存
- 经典算法问题-01-八皇后
- Tensorflow Dataset API 入门
- 腾讯启动校园招聘人才
- R语言将字符串中的数字提取出来作为值
- 数据库之 MySQL—— 50个查询系列
- Web前端:古诗排版网页案例设计
- 泉州计算机编程培训班,泉州编程小学生培训班
- 由iphone12说说激光雷达 FMCW激光雷达