java 文件比较_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,但如果没有缓冲,必能太指望性能了
以上为转载内容:
本人亲测结果:(运行3次)
FileOutputStream执行耗时:7035 豪秒
BufferedOutputStream执行耗时:100 豪秒
FileWriter执行耗时:439 豪秒
FileChannel执行耗时:8501 豪秒
FileOutputStream执行耗时:7001 豪秒
BufferedOutputStream执行耗时:96 豪秒
FileWriter执行耗时:491 豪秒
FileChannel执行耗时:8162 豪秒
FileOutputStream执行耗时:7119 豪秒
BufferedOutputStream执行耗时:97 豪秒
FileWriter执行耗时:416 豪秒
FileChannel执行耗时:8070 豪秒
java 文件比较_java 四种写文件比较相关推荐
- java double 数组排序_java四种数组排序
数组的四种排序 1.快速排序法Arrays.sort(); 用法1.sort(byte[] a) 对指定的 byte 型数组按数字升序进行排序. sort(byte[] a, int fromInde ...
- java 获取包路径_java获取java文件路径的四种方法
java获取java文件路径的四种方法 发布时间:2020-04-17 11:03:45 来源:亿速云 阅读:750 作者:小新 今天小编给大家分享的是java获取java文件路径的四种方法,很多人都 ...
- C++ 创建文件夹的四种方式
在开头不得不吐槽一下,我要的是简单明了的创建文件夹的方式,看得那些文章给的都是复杂吧唧的一大坨代码,不仔细看鬼知道写的是啥.因此,为了方便以后自己阅读,这里自己写一下 C++ 创建文件夹的四种方式: ...
- java多线程流式写入文件夹_java多线程写入同一文件
1.[代码][Java]代码 package com.thread; import java.io.File; import java.io.FileNotFoundException; import ...
- java的四种访问权限_Java四种访问权限
一.访问权限简介 访问权限控制: 指的是本类及本类内部的成员(成员变量.成员方法.内部类)对其他类的可见性,即这些内容是否允许其他类访问.Java 中一共有四种访问权限控制,其权限控制的大小情况是这样 ...
- php格式图片怎么打开方式,php格式文件打开的四种方法
php文件格式怎么打开?要搞清楚php文件用什么打开,首先我们来看php文件是什么文件,PHP是一个网页脚本,文件后缀名为.php,如下图: 但不同于html xml 标签语言,直接可以通过浏览器打开 ...
- 对Java中常见的四种I/O模型理解
对Java中常见的四种I/O模型理解 1.1 知识科普 1.1.1 同步阻塞I/O(Blocking I/O) 1.1.1.1 阻塞与非阻塞 1.1.1.2 同步与异步 1.1.1.3 同步阻塞I/O ...
- 详解Java解析XML的四种方法
http://developer.51cto.com 2009-03-31 13:12 cnlw1985 javaeye 我要评论(8) XML现在已经成为一种通用的数据交换格式,平台的无关性 ...
- C++之文件操作探究(一):写文件——文本文件
相关博文:C++之文件操作探究(一):写文件--文本文件 相关博文:C++之文件操作探究(二):读文件--文本文件 相关博文:C++之文件操作探究(三):写文件--二进制文件 相关博文:C++之文件操 ...
最新文章
- nginx前端根据$remote_addr分发方法
- jenkins中配置Ant
- HDU 2035 人见人爱A^B
- 使用sklearn加载公共数据集、内存数据与CSV文件
- C++笔记——析构函数
- 轩辕传奇服务器合并信息,轩辕传奇9月1日部分服务器合服公告
- 安全数据科学家的日常:需要做什么?将面对哪些挑战?
- 【计算机网络】—— 停止-等待协议
- Python——装饰器的学习笔记(legacy)
- Linux开机过程(转)
- PGM:不完备数据的参数估计
- Ajax学习札记(前言)
- php中的全局变量$GLOBALS与global的区别
- R数据分析:如何绘制回归分析结果的森林图
- 企业个人所得税网上申报系统_增值税、企业所得税、个人所得税申报难点梳理...
- linux cat用法退出,Linux常用命令 - cat命令用法详解
- Winedit 下载第三方库
- python win32gui模块详解_Python笔记_第二篇_面向过程_第二部分_4.常用模块的简单使用_窗体控制模块(win32con、win32gui)...
- skinme找不到java_配置forge后,无法获取依赖
- (数据库系统)(十二)故障恢复