`
四毛行天下
  • 浏览: 454 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

java的四种文件写入方法比较

    博客分类:
  • java
阅读更多

package com.io; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.*; 

/** 
* @ClassName: TestFileOutputStream 
* @Description: TODO 
* @author:  
* @date:2014-12-25 上午09:52:34 
*/ 
public class FileTest { 



public FileTest() { 
} 

public static void main(String[] args) { 
FileOutputStream out = null; 
FileOutputStream outSTr = null; 
BufferedOutputStream Buff=null; 
FileWriter fw = null; 
int count=10000;//写文件行数 
try { 
out = new FileOutputStream(new File("H:\\test\\aaa.txt")); 
long begin = System.currentTimeMillis(); 
for (int i = 0; i < count; i++) { 
out.write("测试java 文件操作\r\n".getBytes()); 
} 
out.close(); 
long end = System.currentTimeMillis(); 
System.out.println("FileOutputStream执行耗时:" + (end - begin) + " 豪秒"); 

outSTr = new FileOutputStream(new File("H:\\test\\aa1.txt")); 
Buff=new BufferedOutputStream(outSTr); 
long begin0 = System.currentTimeMillis(); 
for (int i = 0; i < count; i++) { 
Buff.write("测试java 文件操作\r\n".getBytes()); 
} 
Buff.flush(); 
Buff.close(); 
long end0 = System.currentTimeMillis(); 
System.out.println("BufferedOutputStream执行耗时:" + (end0 - begin0) + " 豪秒"); 


fw = new FileWriter("H:\\test\\aa2.txt"); 
long begin3 = System.currentTimeMillis(); 
for (int i = 0; i < count; i++) { 
fw.write("测试java 文件操作\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=1000的,即写文件1000行的时候,写出的文件大小为18.5KB:
FileOutputStream执行耗时:46 豪秒
BufferedOutputStream执行耗时:31 豪秒
FileWriter执行耗时:15 豪秒


2.当count=10000的,即写文件10000行的时候,写出的文件大小为185KB:
FileOutputStream执行耗时:188 豪秒
BufferedOutputStream执行耗时:32 豪秒
FileWriter执行耗时:16 豪秒



3.当count=100000的,即写文件100000行的时候,写出的文件大小为1856KB:
FileOutputStream执行耗时:1266 豪秒
BufferedOutputStream执行耗时:125 豪秒
FileWriter执行耗时:93 豪秒



4.当count=1000000的,即写文件1000000行的时候,写出的文件大小为18555KB:
FileOutputStream执行耗时:12063 豪秒
BufferedOutputStream执行耗时:1484 豪秒
FileWriter执行耗时:969 豪秒


以上数据可以看到,如果不用缓冲流BufferedOutputStream,FileOutputStream写文件的鲁棒性是很不好的。当写 1000000行的文件的时候,FileOutputStream比FileWriter要慢11094毫秒(11 秒),BufferedOutputStream比FileWriter慢515毫秒。 
不要小看这几秒的时间。当操作的数据量很大的时候,这点性能的差距就会很大了。在通用数据迁移工具导出数据库2千万条记录生成sql脚本文件的时候,性能性能相差10分钟以上。


分享到:
评论

相关推荐

    Java写入大数据文件

    在给定的Java代码中,我们可以看到,程序首先定义了写入文件的路径、切分文件的路径、数据的个数、子文件的个数、精度等变量,然后使用WriteData方法将大数据文件写入到指定的路径中。WriteData方法使用FileWriter和...

    java写入文件操作的几种方法

    FileWriter 是 Java 中最基本的文件写入类,它可以将字符串或字符数组写入文件中。使用 FileWriter 写入文件时,需要指定文件名和是否追加内容的参数。如果将第二个参数设置为 true,则文件内容将被追加到文件的末尾...

    javaIO简单的写入读取文件

    Java中提供了多种文件写入方式,例如使用FileWriter、BufferedWriter、PrintWriter等。在这里,我们使用FileWriter来演示文件写入的过程。 1. 创建文件对象 首先,我们需要创建一个文件对象,用于指定写入文件的...

    dxf文件java写入程序源代码

    同时,为了方便操作,可以创建一个DXFWriter类,封装图层管理、实体创建和文件写入等功能。例如,创建直线的函数可以接收起点和终点坐标,然后将其转换成DXF格式的字符串并写入文件。 为了实现这个功能,你可以参考...

    java 创建EXCEL文件,并向EXCEL中写入数据

    本示例将介绍如何使用Java创建Excel文件并写入数据,主要涉及的库是`jxl`,这是一个用于读写Excel文件的开源Java库。 首先,我们需要引入`jxl`库。`jxl.jar`包含了一系列的类和接口,用于处理Excel文件的各种操作。...

    使用Java实现对dbf文件的简单读写

    3. 写入 dbf 文件:使用 DBFWriter 对象的写入方法,写入 dbf 文件,包括写入表头、字段信息、数据记录等。 4. 关闭 DBFWriter 对象:使用 DBFWriter 对象的关闭方法,关闭 dbf 文件的写操作。 二、相关类的介绍 ...

    Java实现批量向mysql写入数据的方法

    此外,本文还提供了一些相关的学习资源,例如《Java+MySQL数据库程序设计总结》、《Java数据结构与算法教程》、《Java文件与目录操作技巧汇总》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》,这些资源...

    文件写入,项目相对路径,java反射,模板数据写入

    本项目涉及的关键知识点主要包括文件写入、项目相对路径、Java反射以及模板数据写入。这些技术都是构建复杂应用时不可或缺的部分。 首先,我们要了解文件写入。在Java中,我们可以使用`java.io`包下的`FileWriter`...

    Java获得某个路径下的所有文件列表,并写入指定文件

    例如,只保留.java文件: ```java stream.filter(path -&gt; path.toString().endsWith(".java")); ``` 3. **将文件列表写入指定文件** 创建一个`BufferedWriter`用于写入文件,然后将每个文件路径转换为字符串并...

    java读取写入txt文件

    java利用io技术创建文件夹、读取txt文件、写入txt文件(覆盖、不覆盖均有)

    Java读取文件并对其排序后重新写入文件

    在Java编程中,读取文件、对数据进行排序并重新写入文件是常见的操作,尤其在数据处理和分析场景中。下面将详细讲解这个过程,包括相关知识点和具体实现。 首先,我们需要导入Java的`java.io`包,该包包含了处理...

    java读取csv文件并将读取的数据写入新生成的csv文件

    在我们需求中需要读取一个csv文件的数据,但是只有旧的csv的几列数据再新写入一个csv文件,而且在旧的数据有空的数据,需要判断旧的csv的空值。可能写的存在不完善!但是应用的需求里面还是能用的

    java的文件读取和写入操作

    改程序实现了简单的java的文件读取以及写入的操作

    java将一个文件夹中的文件写入到一个文件

    java将一个文件夹中的文件写入到一个文件

    java读取和写入xml文件

    在Java中,处理XML文件主要有四种方式:DOM(Document Object Model)、SAX(Simple API for XML)、StAX(Streaming API for XML)以及JAXB(Java Architecture for XML Binding)。下面将详细介绍这四种方法。 1....

    JavaIO文件操作之写入分页操作

    在这个场景下,我们关注的是Java IO在处理文件时的写入和读取操作,特别是如何进行分页操作以及如何防止出现乱码问题。下面我们将深入探讨这些知识点。 首先,让我们了解一下Java中的IO流。Java IO流分为字符流和...

    java 读取写入csv

    Java作为一种广泛使用的编程语言,提供了多种方式来读取和写入CSV文件。本文将深入探讨如何使用Java进行CSV文件的操作,基于提供的代码片段,我们将详细解析其工作原理,并扩展相关的知识点。 #### 一、Java读取CSV...

    JAVA 文件写入 效率测试

    JAVA 文件写入 效率测试 fileWrite outputStreamTest bufferedOutputTest bufferedWriteTest bufferedWrite And FileWriterTest bufferedWrite And BufferedOutputStreamTest

    基于JAVA的常用文件操作方法

    这篇博文主要探讨了如何使用Java进行常见的文件操作,包括创建、读取、写入、删除文件以及处理目录等。以下是对这些知识点的详细说明: 1. **创建文件**: 在Java中,我们可以使用`java.io.File`类来创建文件。...

Global site tag (gtag.js) - Google Analytics