`
windywindy
  • 浏览: 170658 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

io流效率的比较

 
阅读更多
public class IOTest {

	public static void main(String[] args) {
		IOTest io = new IOTest();
		try {
			long startTime = System.currentTimeMillis();
			io.readWrite("d:/file/aa.txt", "d:/file/bb.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("d:/file/aa.txt", "d:/file/bb.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("d:/file/aa.txt", "d:/file/bb.txt");
			long endTime2 = System.currentTimeMillis();
			System.out.println("Time taken for reading and writing using custom buffering : "
							+ (endTime2 - startTime2) + " milli seconds");
			long startTime3 = System.currentTimeMillis();
			io.readWriteCustom("d:/file/aa.txt", "d:/file/bb.txt");
			long endTime3 = System.currentTimeMillis();
			System.out.println("Time taken for reading and writing using custom buffering : "
							+ (endTime3 - startTime3) + " 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();
		}
	}

	public static void readWriteCustom(String from, String to)
			throws IOException {
		InputStream in = new FileInputStream(from);
		OutputStream out = new FileOutputStream(to);
		try {
			byte[] bytes = new byte[128 * 1024];
			int len;
			while ((len = in.read(bytes)) > 0) {
				out.write(bytes, 0, len);
			}
		} finally {
			if (in != null)
				in.close();
			if (out != null)
				out.close();
		}
	}
}

经测试最后一种方式,速度最快!不知道是否有比他更快的方式!?
分享到:
评论

相关推荐

    IO流、Xml解析

    在IT领域,IO流(Input/Output Stream)和XML解析是两个重要的概念,它们在数据处理和信息交换中起着核心作用。 IO流是Java编程语言中的一个关键特性,用于处理程序与外部设备(如硬盘、网络、内存等)之间的数据...

    IO流 javaio java 流

    Java中的IO流是Java核心库的重要组成部分,它用于在不同数据源之间传输数据。Java IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理单个字符,而字节流处理8位的字节序列。它们又...

    IO流pdf宝典

    ### JAVA IO流概念及其应用详解 #### 一、JAVA为何引入流的概念? 在JAVA中,引入流的概念主要是为了实现对各种类型数据的高效处理。在实际应用中,无论是从网络中传输数据还是从本地文件中读取数据,亦或是与用户...

    Java-Io流,练习

    Java的IO流是Java编程语言中的重要组成部分,它主要用于数据的输入和输出操作。在Java中,IO流被设计为处理任何类型的数据,包括字符、字节甚至对象。本练习旨在帮助初学者理解和掌握Java IO流的基础知识。 一、IO...

    IO流梳理--及效率分析

    本篇文章将深入梳理Java中的I/O流体系,并对不同类型的流进行效率分析,帮助开发者更好地理解和运用。 Java的I/O流分为四大类:字节流(Byte Stream)、字符流(Character Stream)、对象流(Object Stream)和套接...

    IO流的主要流

    Java中的IO流主要负责在不同数据源之间进行数据的传输,包括从文件系统、网络、内存等地方读取数据,以及向这些地方写入数据。IO流被设计为双工通道,既可以进行输入操作,也可以进行输出操作。Java的IO流体系结构...

    java之io流实例

    Java中的IO流是Java语言处理输入输出操作的重要组成部分,它为数据传输提供了强大的支持。本文将深入探讨Java的IO流实例应用,旨在帮助开发者更好地理解和掌握这一关键概念。 IO流在Java中分为两大类:字符流...

    JAVA IO流技术

    Java IO流技术是Java平台中用于处理输入输出的重要机制,其核心在于数据的传输,从数据源到程序或从程序到目的地。在Java中,流分为两大类:输入流(InputStream、Reader)和输出流(OutputStream、Writer)。输入流...

    Java基础篇:IO流.pdf

    Java IO流是Java编程语言中用于处理输入输出操作的一个重要概念。它允许程序读取数据源或向数据目的地写入数据。Java中的IO流主要分为输入流和输出流两大类,每类又可以根据数据处理方式的不同细分为多种具体实现。...

    Java IO流总结

    除了基本的读写操作,Java IO流还支持缓冲流,如BufferedInputStream和BufferedReader,它们可以提高读写效率,减少对底层资源的频繁调用。此外,还有过滤流,如DataInputStream和PrintStream,它们提供了额外的功能...

    java io流 案例

    Java IO流是Java平台中的重要组成部分,用于处理输入和输出操作。它允许程序与外部设备如硬盘、网络、内存等进行数据传输。IO流的概念基于流(Stream)模型,数据以字节或字符序列的形式流动。Java IO库提供了丰富的...

    io流详解代码

    在Java编程语言中,`IO流`(Input/Output流)是处理数据输入与输出的核心概念。`IO流`允许程序读取或写入数据到各种类型的源和目标,如键盘、显示器、文件、网络连接等。本部分的io流详解内容主要涵盖以下几个方面:...

    Java IO流文档

    ### Java IO流详解 #### 一、Input和Output Stream概览 在Java中,输入输出流(简称IO流)是用来处理文件读写的核心技术之一。它主要包括两类:以字节为导向的流和以字符为导向的流。 ##### 1.1 以字节为导向的流...

    IO流三种流方式的文本文件的复制

    在Java编程语言中,IO流(Input/Output流)是用来处理数据输入与输出的重要工具。在文本文件的复制过程中,通常会用到三种主要的流类型:字节流(Byte Stream)、字符流(Character Stream)以及缓冲流(Buffered ...

    IO流的demo

    本示例是关于如何使用Java中的IO流进行实际操作的演示,主要包括字节流和字符流的使用。字节流处理的是原始的八位字节数据,而字符流则处理Unicode字符集中的字符。下面我们将深入探讨这两个主要流类型及其应用场景...

    Java 的 IO流笔记.md

    ### Java IO流学习笔记 #### 一、IO流的四大抽象类 - **InputStream/OutputStream**:字节的输入输出流的抽象类。 - 数据单位:字节(8比特,范围0-255) - **Reader/Writer**:字符的输入输出流的抽象类。 - ...

    java IO流精讲 JAVA IO流实例开发

    Java IO流是Java平台中用于处理输入/输出操作的核心组件,它允许程序与各种数据源(如文件、网络连接、内存缓冲区等)进行交互。Java IO流的精讲涵盖了许多概念和技术,包括流的分类、流的方向、缓冲区的使用、字符...

    java IO流 教程宝典

    Java IO流教程宝典 Java中的IO流是用于在程序与外部资源(如磁盘、网络、内存等)之间传输数据的重要工具。流的概念源于计算机科学中的数据流思想,它代表了数据的有序传输。在Java中,IO流提供了一种标准化的方式...

    java中IO流例子

    理解并熟练运用Java的IO流体系,不仅可以提高代码的可读性和效率,也是成为一名专业Java开发者必备的技能之一。在实际项目中,我们经常会遇到需要对文件进行读写、在网络间传输数据或处理用户输入的情况,这时候,...

    JavaIO流详细总结

    Java IO流是Java编程语言中处理输入和输出的重要机制,它允许程序与各种类型的输入源(如键盘、文件、网络连接)以及输出目标(如显示器、文件、网络)进行交互。在Java中,I/O流被设计为面向对象,使得处理数据变得...

Global site tag (gtag.js) - Google Analytics