`
仁生之狼
  • 浏览: 44776 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

JAVA读写文本文件的效率

    博客分类:
  • java
 
阅读更多

在java写文件中,通常会使用FileOutputStream和FileWriter,FileWriter只能写文本文件。 FileOutputStream也经常结合BufferedOutputStream。因为实际应用中写文本文件的情况占了大多数。所以下面测试用不同的方式生成一个相同行数、大小相同的文件的三种不同方式。

import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;

public class SqliteTest {

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

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

   fw = new FileWriter("F:/add3.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) + " 豪秒");

   out = new FileOutputStream(new File("F:/add4.txt"));
   dos = new DataOutputStream(out);
   long begin4 = System.currentTimeMillis();
   for (int i = 0; i < count; i++) {
    dos.write("测试java 文件操作\r\n".getBytes());
   }
   out.close();
   dos.close();
   long end4 = System.currentTimeMillis();
   System.out.println("DataOutputStream执行耗时:" + (end4 - begin4)
     + " 豪秒");

  } 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读写文件文本文件的关键知识点,这些知识点主要集中在文件的读取、写入以及流的复制等操作上。 ### Java读取文本文件 在Java中,读取文本文件通常涉及到使用`InputStream`...

    java读取文本文件

    在Java编程语言中,读取文本文件是一项基本且常见的任务,尤其在处理数据输入、日志分析或配置文件操作时。下面将详细讲解如何使用Java读取文本文件,包括多种常用的方法和注意事项。 1. 使用`BufferedReader` `...

    java如何读取文件

    本文将详细解析如何使用Java读取文本文件,基于提供的代码示例,深入探讨其工作原理及最佳实践。 ### Java读取文本文件的基础 在Java中,读取文件主要依赖于`java.io`包中的类,如`FileReader`和`BufferedReader`...

    java把文本文件内容导入到数据库

    在这个场景下,"java把文本文件内容导入到数据库"是一个典型的应用,它涉及到文本解析、数据库连接以及数据持久化等关键知识点。 首先,我们需要理解文本文件的格式。描述中提到文件内容的字段由“,”分隔,这种...

    java读取超大文本文件

    `BufferedReader`是Java中读取文本文件的一种常见方法。它内部维护了一个字符缓冲区,可以有效减少磁盘I/O次数,提高读取效率。这种方式适用于文件大小适中,且不需要随机访问的情况。 示例代码中展示了如何使用`...

    java读取文件方法大全

    此方法使用缓冲读取器`BufferedReader`,适用于以行为单位读取文本文件。 1. **按行读取**: 使用`BufferedReader`的`readLine()`方法读取每一行,直到返回`null`表示文件结束。 ### 实现细节与注意事项 1. **...

    Java读写文本文件的示例代码.7z

    在Java编程语言中,读取和写入文本文件是常见的任务,这在处理数据、日志记录或构建用户界面时尤为关键。以下是一份详细的知识点解析,将帮助你理解和应用Java中的文件读写操作。 1. **Java I/O 基础** Java 提供...

    java源码:Java读写文本文件的示例代码.zip

    一、Java读取文本文件 1. 使用`BufferedReader` `BufferedReader`类用于高效地读取字符流。它通过缓冲区技术提高读取效率,减少对磁盘的I/O操作。以下是一个简单的示例: ```java import java.io.*; public class...

    java 删除某行和读写txt文件

    在Java中,如果需要从文本文件中删除特定行,实际上并没有直接提供这样的方法。通常的做法是先将文件中的所有内容读取到内存中,然后根据需要过滤掉不需要的行,最后再将处理后的结果写回原文件或者新的文件中。下面...

    java读取TXT文件入库

    - Java提供`java.io`包中的`BufferedReader`类,用于高效地读取文本文件。首先,我们需要创建一个`FileReader`对象,指定要读取的TXT文件路径,然后通过`FileReader`创建`BufferedReader`对象。 - 使用`...

    java 读取文本并解析字符串

    在Java编程语言中,读取文本文件和解析字符串是常见的任务,这在处理日志、配置文件、数据导入导出等场景中尤为常见。本文将详细介绍如何使用Java进行文本读取以及字符串解析。 首先,我们要了解Java中读取文本文件...

    java读取txt文档的

    - `java.io.BufferedReader`: 用于逐行读取文本文件。 ```java import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.BufferedReader; ``` ### 二、定义读取...

    java 逐行读取文本内容

    首先,Java提供了多种方法来逐行读取文本文件。最常用的是`BufferedReader`类,它可以从输入流中读取字符并以行的形式返回。下面是一个使用`BufferedReader`读取文本文件的基本示例: ```java import java.io.*; ...

    java 按顺序读取文件

    至于`Java.jpg`文件,它通常表示一个图片文件,而不是文本文件。如果需要读取图片数据,可以使用`ImageIO`类或其他图像处理库,但这超出了“按顺序读取文件”的范畴,因为图片数据通常是二进制格式,而非文本。 ...

    一个java文本文件读写类

    这里我们关注的是一个名为"TextFile"的Java类,它提供了对文本文件进行读写的功能。JavaBean是一种特殊类型的Java类,设计用于数据封装和组件重用,通常遵循特定的命名和编码规范。在这个场景下,`TextFile`可能就是...

    Java读文本文件的函数

    在Java编程语言中,读取文本文件是常见的任务,尤其当需要处理大量数据或从文件导入数据到数据库时。本文将深入探讨Java中用于读取文本文件的主要函数和方法,以及如何将读取的数据写入数据库。 首先,我们来看Java...

    新建文本文档_java_

    标题中的“新建文本文档_java_”可能是指一个关于Java编程的项目或教程,其中可能涉及文本处理和文件操作。这个项目的重点在于处理多个文件,比较它们与一个目标文件的内容,然后根据目标文件中出现的文件名进行过滤...

    Java如何读取文本文件

    在Java编程中,读取文本文件是常见的任务之一,这对于处理数据、日志记录或从文件中获取配置信息等场景非常有用。以下是如何使用Java API来读取文本文件的详细步骤,以标题“Java如何读取文本文件”和提供的代码为例...

    Java读取解析GRIB2文件

    下面将详细介绍如何使用Java进行GRIB2文件的读取和解析。 1. **理解GRIB2文件结构**: GRIB2文件由多个消息组成,每个消息包含一组相关的气象数据。消息由一个固定长度的头部(Header)和可变长度的数据部分(Data...

    java 读取指定TXT文档

    ### Java读取指定TXT文档知识点详解 #### 一、引言 在软件开发过程中,经常需要处理各种格式的文件,其中TXT文件是最常见的文本文件格式之一。Java作为一种广泛使用的编程语言,提供了强大的文件操作功能。本文将...

Global site tag (gtag.js) - Google Analytics