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

importjava.io.File;

importjava.io.FileOutputStream;

importjava.io.*;

publicclassFileTest {

publicFileTest() {

}

publicstaticvoidmain(String[] args) {

FileOutputStream out = null;

FileOutputStream outSTr = null;

BufferedOutputStream Buff=null;

FileWriter fw = null;

intcount=1000;//写文件行数

try{

out = newFileOutputStream(newFile("C:/add.txt"));

longbegin = System.currentTimeMillis();

for(inti =0; i

out.write("测试java 文件操作\r\n".getBytes());

}

out.close();

longend = System.currentTimeMillis();

System.out.println("FileOutputStream执行耗时:"+ (end - begin) +" 豪秒");

outSTr = newFileOutputStream(newFile("C:/add0.txt"));

Buff=newBufferedOutputStream(outSTr);

longbegin0 = System.currentTimeMillis();

for(inti =0; i

Buff.write("测试java 文件操作\r\n".getBytes());

}

Buff.flush();

Buff.close();

longend0 = System.currentTimeMillis();

System.out.println("BufferedOutputStream执行耗时:"+ (end0 - begin0) +" 豪秒");

fw = newFileWriter("C:/add2.txt");

longbegin3 = System.currentTimeMillis();

for(inti =0; i

fw.write("测试java 文件操作\r\n");

}

fw.close();

longend3 = 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读写文本文件的效率相关推荐

  1. java 读取文件内容_Java如何读取txt文件的内容?

    这个并不困难,大概的步骤是这样的: TXT是一个文本文件,一般采用流的方式读取: java提供了一个FileInputStream,我们可以直接以文件路径构造这个流,也可以以文件对象构造他,如:Fil ...

  2. java读取文件 路径_Java中的获取文件的物理绝对路径,和读取文件

    获取文件的绝对路径,读取该文件 一.文件目录打印图 下面的文件目录图,是项目中文件的位置信息:下面的例子是按照这个图来演示的. . |-- java | |-- ibard | | |-- demo1 ...

  3. java读取文件错误_java读取文件内容错误,确实在这个目录下

    package com.typesafe.config; import java.io.File; import java.io.IOException; import java.io.Reader; ...

  4. java 读取文件 二进制_JAVA中读取文件(二进制,字符)内容的几种方法总结

    public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public static void readFileB ...

  5. java读取文件夹_Java读取某个文件夹下的所有文件(支持多级文件夹)

    packagecom.vocy.water.batch;importjava.io.FileNotFoundException;importjava.io.IOException;importjava ...

  6. java 文件的读效率,java 读取文件内容 三种形式及效率对比

    IOUtils.getStringFromReader() 读取方式为最快的 InputStream in = null; String line = ""; long start ...

  7. java 读取文件 过滤_java读取txt文件,如何过滤掉注释以及空格

    展开全部 import java.io.RandomAccessFile; /** * 格式 * * * * * @author cs12110 2018年11月16日 * @see * @since ...

  8. java 读取文件 效率_Java 逐行读取文本文件的几种方式以及效率对比

    前言 上周负责的模块中需要逐行读取文件内容, 写完之后对程序执行效率不太满意, 索性上网查了一下 Java 逐行读取文件内容的各种方法, 并且简单地比对了一下执行效率. 在此记录, 希望能够帮到有需要 ...

  9. java 读取文件文本内容_Java读取文本文件

    java 读取文件文本内容 There are many ways to read a text file in java. Let's look at java read text file dif ...

  10. java读取文件的方法是_Java读取文件方法大全

    Java读取文件方法大全 2011/11/25 9:18:42  tohsj0806  http://tohsj0806.iteye.com  我要评论(0) 摘要:文章来源:http://www.c ...

最新文章

  1. 如何成为python 数据分析师_如何成为一名真正的数据分析师或者数据工程师
  2. reentrantlock 使用
  3. 唐山一个葬礼上的豪华车队
  4. caioj 1063 动态规划入门(一维一边推1:美元和马克)
  5. 跟随鼠标走的文字的html代码,跟随鼠标走的文字的HTML代码
  6. 操作系统:第四章 文件管理2 - 磁盘管理,磁盘调度算法
  7. Widget开发中遇到的坑
  8. python 数据库中文乱码 Excel
  9. 1013. 数素数 (20)-PAT乙级真题
  10. 《Storm技术内幕与大数据实践》一第1章 绪论
  11. python函数的四个特点_Python面向对象三大特征之封
  12. STM32机器人控制开发教程No.2 霍尔编码器电机测速以及增量式PID控制(基于HAL库)
  13. 删除目录以及子目录以下所有目录和文件
  14. HTML5+CSS3小实例:炫彩流光圆环加载动画
  15. 解决cascader级联选择器报错“level“ of null
  16. 数据分析3 - 算法篇
  17. html5的download下载标签
  18. 为什么要嫁给物理学3
  19. AVS+标准应用现状
  20. 如何连接ftp服务器

热门文章

  1. android studio 如何修改app名字、修改app图标
  2. 自然语言表示简史(BERT/ELMO/Word2vec/LDA/Bow/Ohehot,词向量、句向量、优缺点、应用与解决的问题)
  3. OFDM专题之多径效应引起的码间串扰问题
  4. 差分探头和隔离探头有什么区别
  5. 解决wps在windows上弹窗等的流氓行为
  6. 数学建模matlab题型,数学建模题型之分类
  7. 印象笔记编辑html,三个小工具帮你搞定印象笔记模版
  8. 全面:Realtek/瑞昱无线产品图谱及市场构成
  9. 办公室局域网组建计算机网络,如何组建办公室局域网
  10. RobotStudio软件:ABB机器人弧焊焊接起始点接触寻位虚拟仿真方法