最近项目中要用到对大文件进行操作,做了下JAVA io方面的测试
对于java.io包中的FileOutputStream,BufferedOutputStream和FileWriter三个不同类写入到文本文件性能,测试代码和结果如下:
环境: 机器ibm thinkpad 61i,配置:2.0G双核CPU,2G内存,操作系统xp sp2,java api1.5.
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
public class TestTxtWriter {
public TestTxtWriter() {
}
public static void main(String[] args) {
FileOutputStream out = null;
FileOutputStream outSTr = null;
BufferedOutputStream Buff = null;
FileWriter fw = null;
int count = 10000000;// 写文件行数
try {
out = new FileOutputStream(new File("D:/FileOutputStream.txt"));
long begin = System.currentTimeMillis();
for (int i = 0; i < count; i++) {
out.write("测试FileOutputStream,BufferedOutputStream和FileWriter,对文件写操作\r\n".getBytes());
}
out.close();
long end = System.currentTimeMillis();
System.out.println("FileOutputStream执行耗时:" + (end - begin) + " 豪秒");
outSTr = new FileOutputStream(new File("D:/BufferedOutputStream.txt"));
Buff = new BufferedOutputStream(outSTr);
long begin0 = System.currentTimeMillis();
for (int i = 0; i < count; i++) {
Buff.write("测试FileOutputStream,BufferedOutputStream和FileWriter,对文件写操作\r\n".getBytes());
}
Buff.flush();
Buff.close();
long end0 = System.currentTimeMillis();
System.out.println("BufferedOutputStream执行耗时:" + (end0 - begin0)
+ " 豪秒");
fw = new FileWriter("D:/FileWriter.txt");
long begin3 = System.currentTimeMillis();
for (int i = 0; i < count; i++) {
fw.write("测试FileOutputStream,BufferedOutputStream和FileWriter,对文件写操作\r\n");
}
fw.close();
long end3 = System.currentTimeMillis();
System.out.println("FileWriter执行耗时:" + (end3 - begin3) + " 豪秒");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fw.close();
Buff.close();
outSTr.close();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
以下结果经过多次执行,取常出现的数据,由于只是简单比较,不做详细统计。
1.当count=1 000的,即写文件1 000行的时候,写出的文件大小为66.4KB:
FileOutputStream执行耗时:31 豪秒
BufferedOutputStream执行耗时:16 豪秒
FileWriter执行耗时:0 豪秒
2.当count=10 000的,即写文件10 000行的时候,写出的文件大小为664KB:
FileOutputStream执行耗时:78 豪秒
BufferedOutputStream执行耗时:32 豪秒
FileWriter执行耗时:15 豪秒
3.当count=100 000的,即写文件100 000行的时候,写出的文件大小为6.7MB:
FileOutputStream执行耗时:453 豪秒
BufferedOutputStream执行耗时:172 豪秒
FileWriter执行耗时:156 豪秒
4.当count=1 000 000的,即写文件1 000 000行的时候,写出的文件大小为64.8MB:
FileOutputStream执行耗时:4500 豪秒
BufferedOutputStream执行耗时:2422 豪秒
FileWriter执行耗时:2500 豪秒
5.当count=10 000 000的,即写文件10 000 000行的时候,写出的文件大小为648MB:
FileOutputStream执行耗时:52453 豪秒
BufferedOutputStream执行耗时:25921 豪秒
FileWriter执行耗时:36094 豪秒
FileOutputStream执行耗时:51547 豪秒
BufferedOutputStream执行耗时:35203 豪秒
FileWriter执行耗时:31609 豪秒
FileOutputStream执行耗时:50078 豪秒
BufferedOutputStream执行耗时:33515 豪秒
FileWriter执行耗时:29516 豪秒
由以上数据可以看到,如果不用缓冲流BufferedOutputStream,FileOutputStream写文件的鲁棒性是很不好的。当写 10 000 000行的文件的时候,FileOutputStream比FileWriter要慢10 000-21 000毫秒(10-21秒)。
不要小看这几秒的时间。当操作的数据量很大的时候,这点性能的差距就会很大了。在操作数据库,通过java导出生成数亿条记录文件的时候,等待的时间要10分钟以上,性能相差大了。
分享到:
相关推荐
本文档是 Java 2 Platform Standard Edition 6.0 的 API 规范。 请参见: 描述 Java 2 Platform 软件包 java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含...
另一方面,`www.pudn.com.txt`可能是一个文本文件,通常用来提供下载链接、版权信息或者额外的说明,比如文档的版本信息、更新日志等。PUDN(普大网络)是一个知名的资源分享网站,可能这个文件指向了更多相关资源或...
Java API帮助文档是Java开发人员不可或缺的资源,它包含了Java平台标准版(Java SE)的所有公共类、接口、方法和异常等详细信息。这个入门级教材不仅适合初学者,也对经验丰富的开发者提供了宝贵的参考资料。下面...
这个文件极有可能是一个文档索引或教程,它可能是Java-API-Mac的官方文档或用户指南,通过打开这个文件,您可以详细了解如何使用这套API来开发Mac平台上的Java应用。 "index.html"文件是HTML(超文本标记语言)格式...
4. **输入/输出流**:`java.io`包提供了输入/输出流API,用于读写文件、网络通信以及处理数据流。例如,`FileInputStream`和`FileOutputStream`用于文件操作,`BufferedReader`和`PrintWriter`则用于文本数据的读写...
"javaapi.rar_Javaapi_javaAPI文档"这个压缩包显然包含了关于Java API的中文版文档,这对于中文环境下的Java开发者来说是一个非常宝贵的资源。 "j2se5.0CN.chm"文件很可能是Java 2 Standard Edition(J2SE)5.0的...
这份"JAVA API官方文档中文版"是Java开发者的重要参考资料,它详尽地解释了Java平台的各个部分,包括基础类库、集合框架、I/O流、网络编程、多线程、数据库连接以及图形用户界面等。 一、基础类库 Java的基础类库...
Java 8 API 文档是Java开发人员的重要参考资料,它详细阐述了Java 8及更高版本提供的各种类库、接口和方法。这份文档以CHM(Compiled Help Manual)格式提供,便于离线查阅和搜索。CHM文件是一种由Microsoft开发的...
转换中的每个处理单元被称为步骤(Steps),如“文本文件输入”、“表输出”等。Kettle Java API提供了`StepInterface`接口和`StepMeta`类,前者定义了步骤运行时的行为,后者存储步骤的元数据,如名称、配置等。 ...
Java API文档是Java开发者不可或缺的参考资料,它详细记录了Java平台标准版(Java SE)中的所有公共类、接口、枚举、注解等组件。这个中文版的文档为中国的Java开发者提供了极大的便利,免去了语言障碍,使得学习和...
本资源是JAVA-API.rar压缩包,内含"JAVA API官方文档中文版.CHM",这是一个完整的Java API中文开发文档,方便中国开发者查阅和学习。 Java API文档详细列出了Java类库中的每个类、接口、方法和构造函数,以及它们的...
这个“JAVA+API官方文档中文版”压缩包包含的是Oracle公司官方发布的Java API的中文翻译版本,对于Java学习者和爱好者来说,是一份极其宝贵的参考资料。 Java API文档详细地介绍了Java平台的标准类库,这些类库涵盖...
这个“JAVA API官方文档中文版”压缩包包含了完整的Java API的中文翻译,对于Java开发人员和学习者来说,是一份极其重要的参考资料。 文档通常会按照Java的不同版本进行更新,确保覆盖最新的特性和功能。Java API...
本文档是 Java Platform Standard Edition 6 的 API !Java 1.6 API的中文帮助文档。 深圳电信培训中心徐海蛟博士教学用api中文文档。支持全文检索,在线即时查询。 里面列出了,Java的所有类及其使用方法! Java ...
Java API文档是学习和开发Java程序的重要资源,它包含了Java平台标准版(Java SE)的所有类库和接口的详细信息。这份文档对于Java开发者来说,无论是新手还是经验丰富的程序员,都是不可或缺的参考资料。 首先,...
在本文中,我们将深入探讨Java API文档中的主要知识点,并通过`jdk-6u10-api-en`这个压缩包文件来了解其结构和内容。 1. **Java类库概述**:Java API文档首先介绍了Java的核心类库,这些类库包括基础类如`java.lang...
在这个“Java_api 中文帮助.chm”文件中,我们可能找到了整个Java SE(标准版)API的详细中文解释,包括类、接口、方法和构造函数等。CHM文件是Microsoft编写的帮助文件格式,集成了索引、搜索等功能,方便用户快速...
Java API操作手册是Java开发人员的重要参考资料,涵盖了Java Standard Edition (SE) 1.8版本的核心库和API。这份手册提供了详细的类、接口和方法的描述,帮助开发者理解和使用Java编程语言。以下是一些关键的知识点...
Java API HTML完整中文版是Java开发人员的重要参考资料,它涵盖了Java 2 Platform Standard Edition (J2SE) 5.0的所有公共类、接口、方法和常量。这个文档以HTML格式呈现,方便开发者在线查阅或离线浏览,是理解、...
Java API字典是Java开发人员的重要参考资料,它包含了Java 6版本的所有公共接口、类和方法,为开发者提供了详尽的API文档。这份资源对于学习和理解Java编程语言的特性和功能至关重要。以下是对Java 6 API的一些主要...