java filewriter 效率_Java基础—Java文件操作流处理效率对比

import java.io.File;

import java.io.FileOutputStream;

import java.io.*;

import java.nio.file.Files;

import java.nio.file.Paths;

public class testFileIO {

public static void testDriver () throws IOException {

int maxlineNum = 100000001;//写入文件的最大行数

int startlineNum = 1;//写入文件的行数

int Multiplying = 2;//行数增长倍率

String contentChars = "写入文件Data\n";//每行的内容(字符流)

byte[] contentBytes = "写入文件Data\n".getBytes();//每行的内容(字节流)

long begin = 0L;

long end = 0L;

//将时间统计写入文件Result.txt中

FileWriter fileWriter = new FileWriter("./Result.txt", true);

BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

System.out.println("Test FileOutputStream begin.");

for (int lineNum = startlineNum; lineNum < maxlineNum; lineNum *= Multiplying) {

begin = System.currentTimeMillis();

testFileOutputStream(lineNum,contentBytes);

end = System.currentTimeMillis();

long timeElapse_FileOutputStream = end - begin;

bufferedWriter.write(String.valueOf(timeElapse_FileOutputStream)+"\t");

}

System.out.println("Test FileOutputStream end.\n");

System.out.println("Test BufferedOutputStream begin.");

bufferedWriter.write("\n");

for (int lineNum = startlineNum; lineNum < maxlineNum; lineNum *= Multiplying) {

begin = System.currentTimeMillis();

testBufferedOutputStream(lineNum,contentBytes);

end = System.currentTimeMillis();

long timeElapse_BufferedOutputStream = end - begin;

bufferedWriter.write(String.valueOf(timeElapse_BufferedOutputStream)+"\t");

}

System.out.println("Test BufferedOutputStream end.\n");

System.out.println("Test FileWriter begin.");

bufferedWriter.write("\n");

for (int lineNum = startlineNum; lineNum < maxlineNum; lineNum *= Multiplying) {

begin = System.currentTimeMillis();

testFileWriter(lineNum,contentChars);

end = System.currentTimeMillis();

long timeElapse_FileWriter = end - begin;

bufferedWriter.write(String.valueOf(timeElapse_FileWriter)+"\t");

}

System.out.println("Test FileWriter end.\n");

System.out.println("Test BufferedWriter begin.");

bufferedWriter.write("\n");

for (int lineNum = startlineNum; lineNum < maxlineNum; lineNum *= Multiplying) {

begin = System.currentTimeMillis();

testBufferedWriter(lineNum,contentChars);

end = System.currentTimeMillis();

long timeElapse_BufferedWriter = end - begin;

bufferedWriter.write(String.valueOf(timeElapse_BufferedWriter)+"\t");

}

System.out.println("Test BufferedWriter end.\n");

System.out.println("Test NewOutputStream begin.");

bufferedWriter.write("\n");

for (int lineNum = startlineNum; lineNum < maxlineNum; lineNum *= Multiplying) {

begin = System.currentTimeMillis();

testNewOutputStream(lineNum,contentBytes);

end = System.currentTimeMillis();

long timeElapse_NewOutputStream = end - begin;

bufferedWriter.write(String.valueOf(timeElapse_NewOutputStream)+"\t");

}

System.out.println("Test NewOutputStream end.\n");

System.out.println("Test NewBufferedWriter begin.");

bufferedWriter.write("\n");

for (int lineNum = startlineNum; lineNum < maxlineNum; lineNum *= Multiplying) {

begin = System.currentTimeMillis();

testNewBufferedWriter(lineNum,contentChars);

end = System.currentTimeMillis();

long timeElapse_NewBufferedWriter = end - begin;

bufferedWriter.write(String.valueOf(timeElapse_NewBufferedWriter)+"\t");

}

System.out.println("Test NewOutputStream end.\n");

bufferedWriter.close();

}

/************************** I/O *****************************/

//面向字节

public static void testFileOutputStream (int lineNum, byte[] content) throws IOException {

FileOutputStream fileOutputStream = new FileOutputStream(new File("./testFileOutputStream.txt"));

while (--lineNum > 0) {

fileOutputStream.write(content);

}

fileOutputStream.close();

}

public static void testBufferedOutputStream (int lineNum, byte[] content) throws IOException {

FileOutputStream fileOutputStream = new FileOutputStream(new File("./testBufferedOutputStream.txt"));

BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);

while (--lineNum > 0) {

bufferedOutputStream.write(content);

}

bufferedOutputStream.close();

}

//面向字符

public static void testFileWriter (int lineNum, String content) throws IOException {

FileWriter fileWriter = new FileWriter("./testFileWriter.txt");

while (--lineNum > 0) {

fileWriter.write(content);

}

fileWriter.close();

}

public static void testBufferedWriter (int lineNum, String content) throws IOException {

FileWriter fileWriter = new FileWriter("./testBufferedWriter.txt");

BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

while (--lineNum > 0) {

bufferedWriter.write(content);

}

bufferedWriter.close();

}

/************************** NIO ****************************/

public static void testNewOutputStream (int lineNum, byte[] content) throws IOException {

OutputStream outputStream = Files.newOutputStream(Paths.get("./testNewOutputStream.txt"));

while (--lineNum > 0) {

outputStream.write(content);

}

outputStream.close();

}

public static void testNewBufferedWriter (int lineNum,String content) throws IOException {

BufferedWriter newBufferedReader = Files.newBufferedWriter(Paths.get("./testNewBufferedWriter.txt"));

while (--lineNum > 0) {

newBufferedReader.write(content);

}

newBufferedReader.close();

}

public static void main (String[] args) throws IOException {

//多次测试时可清空result.txt文件

FileWriter fileWriter = new FileWriter("./Result.txt");

testDriver();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值