`
morle
  • 浏览: 75017 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java API 写文本文件比较

阅读更多

   最近项目中要用到对大文件进行操作,做了下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分钟以上,性能相差大了。

2
0
分享到:
评论

相关推荐

    JAVA_API1.6文档(中文)

    本文档是 Java 2 Platform Standard Edition 6.0 的 API 规范。 请参见: 描述 Java 2 Platform 软件包 java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含...

    JavaAPI.rar_Javaapi _javaAPI文档_java文档

    另一方面,`www.pudn.com.txt`可能是一个文本文件,通常用来提供下载链接、版权信息或者额外的说明,比如文档的版本信息、更新日志等。PUDN(普大网络)是一个知名的资源分享网站,可能这个文件指向了更多相关资源或...

    Java API帮助文档

    Java API帮助文档是Java开发人员不可或缺的资源,它包含了Java平台标准版(Java SE)的所有公共类、接口、方法和异常等详细信息。这个入门级教材不仅适合初学者,也对经验丰富的开发者提供了宝贵的参考资料。下面...

    Java-api-mac

    这个文件极有可能是一个文档索引或教程,它可能是Java-API-Mac的官方文档或用户指南,通过打开这个文件,您可以详细了解如何使用这套API来开发Mac平台上的Java应用。 "index.html"文件是HTML(超文本标记语言)格式...

    java api_javaapi_

    4. **输入/输出流**:`java.io`包提供了输入/输出流API,用于读写文件、网络通信以及处理数据流。例如,`FileInputStream`和`FileOutputStream`用于文件操作,`BufferedReader`和`PrintWriter`则用于文本数据的读写...

    javaapi.rar_Javaapi _javaAPI文档

    "javaapi.rar_Javaapi_javaAPI文档"这个压缩包显然包含了关于Java API的中文版文档,这对于中文环境下的Java开发者来说是一个非常宝贵的资源。 "j2se5.0CN.chm"文件很可能是Java 2 Standard Edition(J2SE)5.0的...

    JAVA API官方文档中文版

    这份"JAVA API官方文档中文版"是Java开发者的重要参考资料,它详尽地解释了Java平台的各个部分,包括基础类库、集合框架、I/O流、网络编程、多线程、数据库连接以及图形用户界面等。 一、基础类库 Java的基础类库...

    Java8 API 文档.CHM

    Java 8 API 文档是Java开发人员的重要参考资料,它详细阐述了Java 8及更高版本提供的各种类库、接口和方法。这份文档以CHM(Compiled Help Manual)格式提供,便于离线查阅和搜索。CHM文件是一种由Microsoft开发的...

    Kettle java API

    转换中的每个处理单元被称为步骤(Steps),如“文本文件输入”、“表输出”等。Kettle Java API提供了`StepInterface`接口和`StepMeta`类,前者定义了步骤运行时的行为,后者存储步骤的元数据,如名称、配置等。 ...

    JavaAPI文档中文版

    Java API文档是Java开发者不可或缺的参考资料,它详细记录了Java平台标准版(Java SE)中的所有公共类、接口、枚举、注解等组件。这个中文版的文档为中国的Java开发者提供了极大的便利,免去了语言障碍,使得学习和...

    JAVA-API.rar_Java API文档·_Java api文档_java api

    本资源是JAVA-API.rar压缩包,内含"JAVA API官方文档中文版.CHM",这是一个完整的Java API中文开发文档,方便中国开发者查阅和学习。 Java API文档详细列出了Java类库中的每个类、接口、方法和构造函数,以及它们的...

    JAVA+API官方文档中文版

    这个“JAVA+API官方文档中文版”压缩包包含的是Oracle公司官方发布的Java API的中文翻译版本,对于Java学习者和爱好者来说,是一份极其宝贵的参考资料。 Java API文档详细地介绍了Java平台的标准类库,这些类库涵盖...

    JAVA API官方文档中文版.zip

    这个“JAVA API官方文档中文版”压缩包包含了完整的Java API的中文翻译,对于Java开发人员和学习者来说,是一份极其重要的参考资料。 文档通常会按照Java的不同版本进行更新,确保覆盖最新的特性和功能。Java API...

    Java 1.6 API 中文 New

    本文档是 Java Platform Standard Edition 6 的 API !Java 1.6 API的中文帮助文档。 深圳电信培训中心徐海蛟博士教学用api中文文档。支持全文检索,在线即时查询。 里面列出了,Java的所有类及其使用方法! Java ...

    java的API文档

    Java API文档是学习和开发Java程序的重要资源,它包含了Java平台标准版(Java SE)的所有类库和接口的详细信息。这份文档对于Java开发者来说,无论是新手还是经验丰富的程序员,都是不可或缺的参考资料。 首先,...

    JAVA API文档

    在本文中,我们将深入探讨Java API文档中的主要知识点,并通过`jdk-6u10-api-en`这个压缩包文件来了解其结构和内容。 1. **Java类库概述**:Java API文档首先介绍了Java的核心类库,这些类库包括基础类如`java.lang...

    java API 中文版

    在这个“Java_api 中文帮助.chm”文件中,我们可能找到了整个Java SE(标准版)API的详细中文解释,包括类、接口、方法和构造函数等。CHM文件是Microsoft编写的帮助文件格式,集成了索引、搜索等功能,方便用户快速...

    java api 操作手册

    Java API操作手册是Java开发人员的重要参考资料,涵盖了Java Standard Edition (SE) 1.8版本的核心库和API。这份手册提供了详细的类、接口和方法的描述,帮助开发者理解和使用Java编程语言。以下是一些关键的知识点...

    Java api html完整中文版

    Java API HTML完整中文版是Java开发人员的重要参考资料,它涵盖了Java 2 Platform Standard Edition (J2SE) 5.0的所有公共类、接口、方法和常量。这个文档以HTML格式呈现,方便开发者在线查阅或离线浏览,是理解、...

    JAVA API字典

    Java API字典是Java开发人员的重要参考资料,它包含了Java 6版本的所有公共接口、类和方法,为开发者提供了详尽的API文档。这份资源对于学习和理解Java编程语言的特性和功能至关重要。以下是对Java 6 API的一些主要...

Global site tag (gtag.js) - Google Analytics