菜单

Java 文件复制(更改缓冲区大小)

目录

Java 文件复制(更改缓冲区大小)

 Java. java.io.InputStream.,,java.io.OutputStream.
介绍使用输入/输出流执行复制处理的示例程序。
通过增加读取缓冲区的大小,使用流的复制过程甚至可以相对快速地复制大文件。
在示例程序中,读取数据的缓冲区大小可以作为参数指定。

 指定的读取缓冲区是在 JavaVM 堆中分配的,因此过大的缓冲区效率会很低。因此,在复制文件时,也会同时检查高效数据读取缓冲区的大小。

示例程序


执行

 直接在 C 盘下准备了一个 100MB 的文件 "100M.txt",用于复制示例程序的文件。在示例程序中 C:\100M.txt 以 1000 KB 缓冲区大小为单位读取数据。 C:\a.txt 复制到

样品在以下环境中运行。
操作系统:WindowsXP
中央处理器:Athlon 1.46GHz
内存:1GB
JRE : 1.6.4

执行示例

/**
 * 执行示例。
 * @param args.
 */
public static void main(String[] args) {
    try {
        copyStream("C:\\100M.txt", "C:\\a.txt",1000);
    } catch (IOException e) {
        e.printStackTrace(); }
    }
}

执行结果


更改缓冲区大小

要在复制文件时检查有效的数据读取缓冲区大小,请使用 copyStream 的第三个参数作为
下面总结了以 1KB、100KB、1000KB 和 10000KB 为单位的类似复制处理的结果。



虽然仅从上面的结果不能得出结论,但如果以1000KB为单位指定数据读取缓冲区大小,
结果表明,在复制处理期间,它在堆使用和处理时间方面是高效的。
当文件大小增加时(约 1 GB),也得到了类似的结果。

相反,在复制小文件(约 1MB 或更小)时,最好指定 100KB 左右的缓冲区大小,因为缓冲区过大将毫无用处。

使用 FileChannel 更快


 java.io.InputStream.,,java.io.OutputStream.
复制处理对于理解输入/输出流很重要,但是
J2SE1.4 中引入的新 I/O java.nio.channels.FileChannel#ransferTo
这种方法可以更高效地复制文件。
下一节将介绍如何使用 FileChannel 方便快捷地复制文件。
Java 文件复制(简单快捷)

  • URLをコピーしました!
目录