`
clarancepeng
  • 浏览: 193127 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

io,nio和操作系统命令性能比较

阅读更多
package org.clarance;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class TestNIO {
public void t1(String p1, String p2)  {
long b = System.currentTimeMillis();
String cmd = "cmd /c copy " + p1 + " " + p2;
java.lang.Process p = null;
try {
p = java.lang.Runtime.getRuntime().exec(cmd);
p.waitFor();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
finally {
if(p != null) p.destroy();
}
System.out.println("t1 cost :: " + (System.currentTimeMillis() -b));
}

public void t2(String p1, String p2) {
long b = System.currentTimeMillis();
InputStream in = null;
OutputStream out = null;
try {
in = new java.io.FileInputStream(p1);
out = new java.io.FileOutputStream(p2);
byte[] data = new byte[1024];
int n = 0;
while((n = in.read(data)) != -1) {
out.write(data, 0, n);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
try {
if(in != null) {
in.close();
}
if(out != null) {
out.close();
}
}
catch(IOException ee) {

}
}
System.out.println("t2 cost :: " + (System.currentTimeMillis() -b));

}

public void t3(String p1, String p2) {
long b = System.currentTimeMillis();
FileInputStream in = null;
FileOutputStream out = null;
try {
in = new FileInputStream(p1);
out = new FileOutputStream(p2);
FileChannel fc = in.getChannel();
FileChannel fc2 = out.getChannel();
ByteBuffer bf = ByteBuffer.allocateDirect(1024);
while(fc.read(bf) != -1) {
bf.flip();
fc2.write(bf);
bf.clear();
}
fc.close();
fc2.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}

System.out.println("t3 cost :: " + (System.currentTimeMillis() -b));
}

public void t4(String p1, String p2) {
long b = System.currentTimeMillis();
java.io.RandomAccessFile rf = null;
java.io.RandomAccessFile rf2 = null;

try {
rf = new java.io.RandomAccessFile(p1, "rw");
rf2 = new java.io.RandomAccessFile(p2, "rw");
FileChannel fc1 = rf.getChannel();
FileChannel fc2 = rf2.getChannel();
fc1.transferTo(0, fc1.size(), fc2);

fc1.close();
fc2.close();

}
catch(Exception e) {

}
finally {

try {
if(rf != null) rf.close();
if(rf2 != null) rf2.close();
} catch (IOException e3) {
// TODO Auto-generated catch block
e3.printStackTrace();
}
}

System.out.println("t4 cost :: " + (System.currentTimeMillis() -b));
}

public static void main(String[] args) {
TestNIO tn = new TestNIO();
final String p1 = "F:\\downloads\\platform921_win32.exe";
final String p2 = "E:\\downloads\\";
final String n1 = "p10.exe";
tn.t1(p1, p2+1+n1);
tn.t2(p1, p2+2+n1);
tn.t3(p1, p2+3+n1);
tn.t4(p1, p2+4+n1);

}

}
分享到:
评论

相关推荐

    mongodb的开发和nio实现

    NIO(New Input/Output)是Java平台上的一个库,提供了更高效的数据I/O操作方式,对比传统的IO模型,NIO更适合处理大量并发连接的情况。 MongoDB的开发涉及到多个方面,包括数据模型设计、查询优化、数据备份与恢复...

    java_NIO_入门

    它旨在通过使用更接近操作系统底层的I/O方式,来提高处理速度和性能。 NIO相比传统的IO主要有以下几个方面的优势: 1. 面向缓冲区:NIO通过使用Buffer作为数据临时存储方法,而传统的IO则依赖于Stream流。Buffer...

    使用NIO方式完成简单的通信

    在Java编程中,NIO(New IO)是一种与传统IO不同的I/O模型,它提供了非阻塞的输入/输出操作,适用于高并发、大数据量的网络应用。本教程将介绍如何使用NIO来实现简单的通信,包括消息头和消息体的设计。 首先,我们...

    IO管理核心技术 驱动开发必读

    - 驱动的角色:设备驱动程序是操作系统和硬件设备之间的桥梁,它理解设备的特性和命令,并实现操作系统所需的抽象层。 - 驱动类型:字符驱动、块驱动、网络驱动等,根据设备的数据传输特性分类。 - 动态加载与...

    java IO流方式上传下载文件,源代码

    - 使用NIO(非阻塞I/O)或更高效的Apache Commons IO库,提高文件操作性能。 - 对于大量文件操作,考虑使用多线程处理,提升并发性能。 通过以上讲解,我们可以理解Java IO流在文件上传下载中的核心作用,以及`...

    java实现的类似windows操作系统的xCopy

    Java 实现的类似 Windows 操作系统的 `xCopy` 是一个基于 Java 编程语言构建的命令行工具,它模仿了 Windows 系统中的经典命令 `xcopy`,用于执行文件和目录的批量复制操作。在 Windows 环境下,`xcopy` 是一个强大...

    java IO

    在Java 7及更高版本中,NIO.2进一步增强了异步I/O和文件系统操作的能力。 9. **文件操作的关闭** 完成文件I/O操作后,记得关闭打开的流。在Java 7及以上版本,可以使用try-with-resources语句自动关闭资源,避免...

    文件管理系统

    在Java环境下实现文件管理系统,我们可以利用Java的`java.io`和`java.nio`包提供的类和接口。例如,`File`类用于表示文件和目录,`RandomAccessFile`用于随机访问文件,`BufferedReader`和`BufferedWriter`进行缓冲...

    IO_all_in_one.pdf

    在Java编程中,IO(Input/Output)操作是系统与外部世界交互的关键。本文将通过分析Netty框架中的IO模型,探讨其工作原理,以及如何避免常见问题,特别是针对描述中提到的`selector.select()`阻塞问题进行深入讲解。...

    java面试题,命令大全!

    结合Java面试题和Linux命令,你可以更好地应对技术面试,无论是对Java技术的深入理解还是对操作系统层面的熟练运用,都将提升你的专业素养和实际工作能力。在学习过程中,不断实践和应用这些知识,才能真正地...

    获取磁盘驱动器文件系统名称的资源

    EXT4在Linux中广泛使用,提供了高速性能和数据安全性。因此,了解磁盘驱动器的文件系统名称对于选择合适的工具进行数据备份、恢复、迁移等操作至关重要。 6. **应用场景** 获取磁盘驱动器文件系统名称的应用场景...

    实例83_文件操作_拷贝文件.rar_实例文件操

    本实例“实例83_文件操作_拷贝文件”关注的是如何在不同的操作系统环境下复制文件,这是编程和系统管理中的基础任务。在Python、Java、C#、Bash脚本等常见编程语言中,都有相应的API或命令用于实现文件的拷贝。 ...

    自己写的java中文件的操作工具类,包括对目录的管理

    8. **文件路径处理**:Java 9引入了`java.nio.file`包中的`Path`类,用于表示文件系统中的路径,提供了更安全和跨平台的路径操作。 9. **权限控制**:文件操作可能涉及权限控制,例如读取、写入、执行权限。在Java...

    OS_keshe(java).zip_java 监控文件

    Java提供了一些内建的工具,如`java.lang.management`包,它包含了`OperatingSystemMXBean`接口,可以获取到关于操作系统的一系列信息,包括CPU使用率。`ManagementFactory`类可以获取到这个MBean的实例,然后调用其...

    socket.rar

    Java NIO,即New IO,引入了选择器(Selector)和通道(Channel)的概念,使得程序可以同时监控多个通道的状态,而不需要为每个连接创建一个单独的线程。这极大地提高了服务器处理大量并发连接的能力,降低了系统资源的...

    java项目实战练习小项目

    在项目中,你可能需要读取配置文件、存储数据或与其他系统进行数据交换,因此了解IO和NIO的使用至关重要。 5. **异常处理** 异常处理是Java编程中不可或缺的部分,它帮助我们优雅地处理程序运行时可能出现的问题。...

    SD卡读写源程序很好很好

    `java.io.File`和`java.nio`包提供了文件操作接口,而在Android框架层,可以使用`Environment.getExternalStorageDirectory()`获取SD卡路径。 三、源程序实现要点 1. **设备探测**:程序首先需要找到SD卡对应的...

    比较好的Java开发资料

    配合Java开发,掌握Linux操作系统的基本命令,如文件管理、进程控制、网络操作等,可以提升开发者的系统操作能力,特别是在服务器端的部署和调试。 10. **开发工具与框架** 使用IDE如IntelliJ IDEA或Eclipse,...

    JavaSE 高级面试题.docx

    3. **IO与NIO**:Java的输入输出(IO)模型和非阻塞IO(NIO)模型,包括`BufferedReader`、`FileInputStream`、`FileOutputStream`、`Channel`、`Selector`和`Pipe`等。 4. **反射机制**:利用反射动态访问和修改类...

    黑马java面试题

    - Linux系统下的内核参数用于优化系统性能和内存管理。 #### IO模型 - Linux下的IO模型包括阻塞IO、非阻塞IO、IO复用、信号驱动IO和异步IO。 #### Linux命令 - Linux命令用于日常的系统管理和操作,如文件操作、...

Global site tag (gtag.js) - Google Analytics