这几天在给公司查询一段代码的效率问题,我之前也大概在javaeye上问过就是关于我blog里 lucene索引文档的pdf,word,xls时的效率问题,今天又查了查感觉还是代码上的问题,于是又改了些代码,发现效率又很大的提高,所以把io 流效率的问题又仔细研究了下,留个笔记
import java.io.*;
public class IOTest {
public static void main(String[] args){
IOTest io = new IOTest();
try{
long startTime = System.currentTimeMillis();
io.readWrite("c:/temp/1.txt","c:/temp/2.txt");
long endTime = System.currentTimeMillis();
System.out.println("Time taken for reading and writing using default behaviour : "
+ (endTime - startTime) + " milli seconds" );
long startTime1 = System.currentTimeMillis();
io.readWriteBuffer("c:/temp/1.txt","c:/temp/2.txt");
long endTime1 = System.currentTimeMillis();
System.out.println("Time taken for reading and writing using buffered streams : "
+ (endTime1 - startTime1) + " milli seconds" );
long startTime2 = System.currentTimeMillis();
io.readWriteArray("c:/temp/1.txt","c:/temp/2.txt");
long endTime2 = System.currentTimeMillis();
System.out.println("Time taken for reading and writing using custom buffering : "
+ (endTime2 - startTime2) + " milli seconds" );
}catch(IOException e){ e.printStackTrace();}
}
public static void readWrite(String fileFrom, String fileTo) throws IOException{
InputStream in = null;
OutputStream out = null;
try{
in = new FileInputStream(fileFrom);
out = new FileOutputStream(fileTo);
while(true){
int bytedata = in.read();
if(bytedata == -1)
break;
out.write(bytedata);
}
}
finally{
if(in != null)
in.close();
if(out !=null)
out.close();
}
}
public static void readWriteBuffer(String fileFrom, String fileTo) throws IOException{
InputStream inBuffer = null;
OutputStream outBuffer = null;
try{
InputStream in = new FileInputStream(fileFrom);
inBuffer = new BufferedInputStream(in);
OutputStream out = new FileOutputStream(fileTo);
outBuffer = new BufferedOutputStream(out);
while(true){
int bytedata = inBuffer.read();
if(bytedata == -1)
break;
out.write(bytedata);
}
}
finally{
if(inBuffer != null)
inBuffer.close();
if(outBuffer !=null)
outBuffer.close();
}
}
public static void readWriteArray(String fileFrom, String fileTo) throws IOException{
InputStream in = null;
OutputStream out = null;
try{
in = new FileInputStream(fileFrom);
out = new FileOutputStream(fileTo);
int availableLength = in.available();
byte[] totalBytes = new byte[availableLength];
int bytedata = in.read(totalBytes);
out.write(totalBytes);
}
finally{
if(in != null)
in.close();
if(out !=null)
out.close();
}
}
}
Time taken for reading and writing using default behavior : 660 milli seconds
Time taken for reading and writing using buffered streams : 270 milli seconds
Time taken for reading and writing using custom buffering : 0 milli seconds
结果表明最后一种还最快的
分享到:
相关推荐
Java IO流技术是Java平台中用于处理输入输出的重要机制,其核心在于数据的传输,从数据源到程序或从程序到目的地。在Java中,流分为两大类:输入流(InputStream、Reader)和输出流(OutputStream、Writer)。输入流...
Java中的IO流是Java核心库的重要组成部分,它用于在不同数据源之间传输数据。Java IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理单个字符,而字节流处理8位的字节序列。它们又...
Java IO流是Java平台中的重要组成部分,用于处理输入和输出操作。它允许程序与外部设备如硬盘、网络、内存等进行数据传输。IO流的概念基于流(Stream)模型,数据以字节或字符序列的形式流动。Java IO库提供了丰富的...
### Java IO流详解 #### 一、Input和Output Stream概览 在Java中,输入输出流(简称IO流)是用来处理文件读写的核心技术之一。它主要包括两类:以字节为导向的流和以字符为导向的流。 ##### 1.1 以字节为导向的流...
Java IO流是Java编程语言中处理输入和输出的重要机制,它允许程序与各种类型的输入源(如键盘、文件、网络连接)以及输出目标(如显示器、文件、网络)进行交互。在Java中,I/O流被设计为面向对象,使得处理数据变得...
Java IO流是Java平台中用于处理输入/输出操作的核心组件,它允许程序与各种数据源(如文件、网络连接、内存缓冲区等)进行交互。Java IO流的精讲涵盖了许多概念和技术,包括流的分类、流的方向、缓冲区的使用、字符...
Java IO流是Java平台中用于处理输入输出操作的核心部分,它允许程序与各种数据源(如文件、设备、网络)进行交互。IO流在Java中分为两大类:字节流和字符流,每种流又有输入流和输出流之分。字节流处理的是8位的字节...
Java的IO流是Java编程语言中的重要组成部分,它主要用于数据的输入和输出操作。在Java中,IO流被设计为处理任何类型的数据,包括字符、字节甚至对象。本练习旨在帮助初学者理解和掌握Java IO流的基础知识。 一、IO...
在这个大总结中,我们将深入探讨Java IO流的基本概念、分类、常用类以及实践应用。 1. **基本概念** - **流(Stream)**:在Java中,流是一个抽象的概念,代表数据的有序序列。它可以是字节流或字符流,流向可以是...
Java IO流是Java平台核心特性之一,它负责在程序与外部资源之间传输数据。这个概念在Java编程中至关重要,因为它提供了处理输入(读取)和输出(写入)的机制,无论是从键盘、文件、网络还是其他数据源。在本文中,...
除了基本的读写操作,Java IO流还支持缓冲流,如BufferedInputStream和BufferedReader,它们可以提高读写效率,减少对底层资源的频繁调用。此外,还有过滤流,如DataInputStream和PrintStream,它们提供了额外的功能...
Java中的IO流是Java语言处理输入输出操作的重要组成部分,它为数据传输提供了强大的支持。本文将深入探讨Java的IO流实例应用,旨在帮助开发者更好地理解和掌握这一关键概念。 IO流在Java中分为两大类:字符流...
Java IO流是Java编程语言中处理输入...通过深入学习和理解IO流,开发者可以更好地掌握数据的读取、写入和传输,提升程序的效率和功能。同时,熟悉相关工具和配置文件的使用也能帮助开发者在实际项目中更加得心应手。
本文将深入探讨Java IO流的基本概念、分类以及常见使用场景。 首先,我们要明白,Java中的流分为字节流和字符流两大类。字节流处理的是8位的字节,而字符流处理的是16位的Unicode字符。字节流又分为输入流...
在字符流中,我们有BufferedReader和BufferedWriter,它们增加了缓冲功能,提高了读写效率。另外,FileReader和FileWriter简化了文件操作,而PrintWriter则提供了格式化的打印功能。 转换流InputStreamReader和...
Java IO 流、文件读取操作 Java IO 流是 Java 语言中的一种基本输入/输出机制,它提供了多种方式来处理输入/输出操作。在 Java 中,IO 流可以分为两大类:字节流和字符流。字节流主要用于处理二进制数据,而字符流...
JavaIO流详解归纳 Java 的核心库 java.io 提供了全面的 IO 接口,包括文件读写、标准设备输出等。Java 中 IO 是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。在项目开发中,IO 是非常...
Java IO流是Java编程语言中用于处理输入输出操作的一个重要概念。它允许程序读取数据源或向数据目的地写入数据。Java中的IO流主要分为输入流和输出流两大类,每类又可以根据数据处理方式的不同细分为多种具体实现。...
### Java IO流详解 #### 一、流的概述与分类 在Java中,流是一种抽象概念,用于描述数据从一个地方传输到另一个地方的过程。它主要用于处理数据输入和输出,例如从磁盘读取文件、向网络发送数据或从键盘接收用户...
理解并熟练运用Java的IO流体系,不仅可以提高代码的可读性和效率,也是成为一名专业Java开发者必备的技能之一。在实际项目中,我们经常会遇到需要对文件进行读写、在网络间传输数据或处理用户输入的情况,这时候,...