今天做了java IO 与 NIO 拷贝文件的性能测试,发现NIO并不比IO快多少,甚至有时候比老IO慢。
以下是测试记录(用时毫秒记):
文件1大小:103858393
IO第1次用时 6718
文件1大小:103858393
IO第2次用时 1875
文件1大小:103858393
IO第3次用时 2766
文件1大小:103858393
IO第4次用时 2484
文件1大小:103858393
IO第5次用时 3672
文件1大小:103858393
IO第6次用时 2266
文件1大小:103858393
IO第7次用时 1828
文件1大小:103858393
IO第8次用时 2266
文件1大小:103858393
IO第9次用时 2453
文件1大小:103858393
IO第10次用时 2500
文件1大小:103858393
IO第11次用时 1937
文件1大小:103858393
IO第12次用时 2407
文件1大小:103858393
IO第13次用时 1875
文件1大小:103858393
IO第14次用时 3672
文件1大小:103858393
IO第15次用时 2109
文件1大小:103858393
IO第16次用时 1844
文件1大小:103858393
IO第17次用时 3500
文件1大小:103858393
IO第18次用时 2141
文件1大小:103858393
IO第19次用时 3859
文件1大小:103858393
IO第20次用时 1969
文件2大小:103920648
NIO第1次用时 7390
文件2大小:103920648
NIO第2次用时 1781
文件2大小:103920648
NIO第3次用时 1969
文件2大小:103920648
NIO第4次用时 2297
文件2大小:103920648
NIO第5次用时 1656
文件2大小:103920648
NIO第6次用时 1578
文件2大小:103920648
NIO第7次用时 2203
文件2大小:103920648
NIO第8次用时 1672
文件2大小:103920648
NIO第9次用时 1656
文件2大小:103920648
NIO第10次用时 2234
文件2大小:103920648
NIO第11次用时 1813
文件2大小:103920648
NIO第12次用时 1937
文件2大小:103920648
NIO第13次用时 3594
文件2大小:103920648
NIO第14次用时 1578
文件2大小:103920648
NIO第15次用时 2328
文件2大小:103920648
NIO第16次用时 1750
文件2大小:103920648
NIO第17次用时 1516
文件2大小:103920648
NIO第18次用时 2156
文件2大小:103920648
NIO第19次用时 1813
文件2大小:103920648
NIO第20次用时 1875
Nio代码
public static void copyFileNew(File sourceFile, File destFile)
throws IOException {
if (!destFile.exists()) {
destFile.createNewFile();
}
FileChannel source = null;
FileChannel destination = null;
try {
source = new FileInputStream(sourceFile).getChannel();
destination = new FileOutputStream(destFile).getChannel();
destination.transferFrom(source, 0, source.size());
} finally {
if (source != null) {
source.close();
}
if (destination != null) {
destination.close();
}
}
}
Io代码
public static void copyFileOld(File source, File dest) throws IOException {
if (!dest.exists()) {
dest.createNewFile();
}
InputStream in = null;
OutputStream out = null;
try {
in = new FileInputStream(source);
out = new FileOutputStream(dest);
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
} finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
}
分享到:
相关推荐
在Java编程语言中,IO(Input/Output)流是处理数据输入和输出的重要工具,尤其在文件操作中显得尤为重要。本篇文章将详细讲解如何使用Java的IO流进行文件复制,以及如何实现整个文件夹的复制,并检查复制是否成功。...
10. **测试**:为了确保MavenUtil的文件拷贝功能正确无误,通常需要编写单元测试和集成测试。例如,使用JUnit或TestNG框架,模拟不同的文件状态和系统环境,验证MavenUtil的正确性和健壮性。 以上就是关于...
Java的IO操作是Java编程中的重要组成部分,它允许开发者处理输入和输出,包括读取文件、写入...同时,随着Java NIO(New IO)和NIO.2的引入,Java的IO性能和功能得到了显著提升,为开发者提供了更多高效和灵活的选择。
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...
Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...
本项目"用Java实现的图片加密程序"正是关注这一主题,它利用Java的IO流处理技术,实现了对图片文件的加密和解密功能。以下是关于这个项目的一些详细知识点: 1. **Java IO流**:Java的IO流是处理输入输出的基础,它...
- 将各插件对应的`.jar`文件拷贝到`D:\tool\apache-jmeter-3.1\lib\ext`目录下。 - **添加其他必要文件**: - 将`ReportGen.jar`和`jmeter-plugins-manager-0.11.jar`也拷贝到上述目录。 #### 六、配置Jenkins任务...
`java.io`包提供了许多类来支持文件操作,如`File`用于表示文件或目录,`FileInputStream`和`FileOutputStream`用于读写文件。程序的起点可能是创建`File`对象,分别代表源文件和目标文件,然后通过`FileInputStream...
Java中IO字节流基本操作(复制文件)并测试性能 Java中的IO字节流是一种基本的输入/输出操作,用于复制文件、读取文件、写入文件等操作。今天我们将详细介绍Java中IO字节流基本操作(复制文件)并测试性能。 Java...
10. **性能优化**:Jetty 一直致力于性能优化,即使是较早的版本,也可能会包含一些性能提升的技术,如零拷贝(Zero-Copy)和直接缓冲区(Direct Buffer)。 使用 Jetty 1.3.3 时,开发者需要注意它的兼容性和安全...
Java核心测试知识点详解 在Java编程领域,"Java核心"是指Java语言的基础部分,包括语法、数据类型、控制结构、类与对象、异常处理、集合框架等关键概念。本资料着重于这些基础知识的复习,旨在帮助开发者巩固和提升...
NativeIO是Hadoop的一个特性,它允许使用本地(系统)库进行I/O操作,以提高性能。 NativeIO主要包含两部分:libhadoop.so(或其他平台对应的动态链接库)和Hadoop的C++接口。这个功能使得Hadoop可以利用操作系统...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...
7. **IO工具类**:Java提供了一些内置的IO工具类,如Files类(在Java 7中引入),它可以简化很多文件操作,如拷贝、移动、删除文件等。 以上就是基于标题、标签和文件名推测的IO相关知识点,具体的学习内容和实践...
Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...
- **性能测试**:了解压力测试、负载测试、稳定性测试,使用Apache JMeter或LoadRunner等工具。 - **缺陷管理**:Bugzilla、JIRA等工具的使用,以及缺陷报告的编写规范。 以上只是部分可能的考点,实际试题可能会...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...