`
零下。
  • 浏览: 28565 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

转载 java文件写入耗时

阅读更多
转载地址:http://zhenqinghualy.blog.163.com/blog/static/5498053520100123332267/
原创地址不详

从老紫竹的网站上转来滴


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,但如果没有缓冲,必能太指望性能了
分享到:
评论

相关推荐

    Java写入大数据文件

    Java写入大数据文件 Java语言中写入大数据文件是指使用Java语言编写程序将大量数据写入到文件中的一种操作。这种操作在实际应用中非常常见,如数据分析、数据挖掘、科学计算等领域。在Java中,写入大数据文件通常...

    JAVA 文件写入 效率测试

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

    java读取写入txt文件

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

    java 读取写入csv

    ### Java读取与写入CSV文件的详细解析 在日常的软件开发中,处理CSV(Comma Separated Values)文件是一种常见的需求,特别是在数据分析、数据导入导出等场景下。Java作为一种广泛使用的编程语言,提供了多种方式来...

    javaIO简单的写入读取文件

    JavaIO简单的写入读取文件 javaIO简单的写入读取文件是Java编程语言中最基本的文件操作。下面我们将详细介绍javaIO简单的写入读取文件的知识点。 一、 文件写入 文件写入是指将数据从程序中写入到文件中。Java中...

    dxf文件java写入程序源代码

    本篇将详细讲解如何使用Java编写程序来创建不依赖AutocAD环境的DXF文件,并确保其与AutoCAD R2007及更高版本兼容。 首先,我们需要理解DXF文件的基本结构。DXF文件是由一系列按照特定顺序排列的ASCII文本行组成的,...

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

    Java 写入文件操作的几种方法 Java 语言中提供了多种写入文件的方法,每种方法都有其特点和应用场景,本文将详细介绍 Java 中写入文件的几种不同方法,供读者根据实际需求选择合适的方法。 FileWriter 写入文件 ...

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

    使用 Java 实现对 dbf 文件的简单读写 Java 是一种广泛使用的编程语言,对于读写 dbf 文件具有重要的应用价值。本文将介绍使用 Java 实现对 dbf 文件的简单读写,包括读写 dbf 文件的基本步骤、相关类的介绍、代码...

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

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

    java日志写入不同文件路径

    java日志写入类,根据网上代码修改,可自定义日志写入文件夹

    java写文件固定大小为2G

    下面我们将深入探讨如何实现这一目标,以及相关的Java文件读写技术。 首先,Java提供了一系列的文件I/O类,如`java.io.File`、`java.io.FileOutputStream`和`java.io.BufferedWriter`,用于创建、写入和管理文件。...

    java Excel写入导出

    通过Apache POI库,Java开发者可以方便地进行Excel文件的读取和写入操作,实现数据的导出和导入功能。了解并熟练掌握Apache POI,能够极大地提升Java应用程序在处理Excel任务时的效率和灵活性。在实际应用中,根据...

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

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

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

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

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

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

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

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

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

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

    java的文件读取和写入操作

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

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

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

Global site tag (gtag.js) - Google Analytics