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);
}
}
分享到:
相关推荐
NIO(New Input/Output)是Java平台上的一个库,提供了更高效的数据I/O操作方式,对比传统的IO模型,NIO更适合处理大量并发连接的情况。 MongoDB的开发涉及到多个方面,包括数据模型设计、查询优化、数据备份与恢复...
它旨在通过使用更接近操作系统底层的I/O方式,来提高处理速度和性能。 NIO相比传统的IO主要有以下几个方面的优势: 1. 面向缓冲区:NIO通过使用Buffer作为数据临时存储方法,而传统的IO则依赖于Stream流。Buffer...
在Java编程中,NIO(New IO)是一种与传统IO不同的I/O模型,它提供了非阻塞的输入/输出操作,适用于高并发、大数据量的网络应用。本教程将介绍如何使用NIO来实现简单的通信,包括消息头和消息体的设计。 首先,我们...
- 驱动的角色:设备驱动程序是操作系统和硬件设备之间的桥梁,它理解设备的特性和命令,并实现操作系统所需的抽象层。 - 驱动类型:字符驱动、块驱动、网络驱动等,根据设备的数据传输特性分类。 - 动态加载与...
- 使用NIO(非阻塞I/O)或更高效的Apache Commons IO库,提高文件操作性能。 - 对于大量文件操作,考虑使用多线程处理,提升并发性能。 通过以上讲解,我们可以理解Java IO流在文件上传下载中的核心作用,以及`...
Java 实现的类似 Windows 操作系统的 `xCopy` 是一个基于 Java 编程语言构建的命令行工具,它模仿了 Windows 系统中的经典命令 `xcopy`,用于执行文件和目录的批量复制操作。在 Windows 环境下,`xcopy` 是一个强大...
在Java 7及更高版本中,NIO.2进一步增强了异步I/O和文件系统操作的能力。 9. **文件操作的关闭** 完成文件I/O操作后,记得关闭打开的流。在Java 7及以上版本,可以使用try-with-resources语句自动关闭资源,避免...
在Java环境下实现文件管理系统,我们可以利用Java的`java.io`和`java.nio`包提供的类和接口。例如,`File`类用于表示文件和目录,`RandomAccessFile`用于随机访问文件,`BufferedReader`和`BufferedWriter`进行缓冲...
在Java编程中,IO(Input/Output)操作是系统与外部世界交互的关键。本文将通过分析Netty框架中的IO模型,探讨其工作原理,以及如何避免常见问题,特别是针对描述中提到的`selector.select()`阻塞问题进行深入讲解。...
结合Java面试题和Linux命令,你可以更好地应对技术面试,无论是对Java技术的深入理解还是对操作系统层面的熟练运用,都将提升你的专业素养和实际工作能力。在学习过程中,不断实践和应用这些知识,才能真正地...
EXT4在Linux中广泛使用,提供了高速性能和数据安全性。因此,了解磁盘驱动器的文件系统名称对于选择合适的工具进行数据备份、恢复、迁移等操作至关重要。 6. **应用场景** 获取磁盘驱动器文件系统名称的应用场景...
本实例“实例83_文件操作_拷贝文件”关注的是如何在不同的操作系统环境下复制文件,这是编程和系统管理中的基础任务。在Python、Java、C#、Bash脚本等常见编程语言中,都有相应的API或命令用于实现文件的拷贝。 ...
8. **文件路径处理**:Java 9引入了`java.nio.file`包中的`Path`类,用于表示文件系统中的路径,提供了更安全和跨平台的路径操作。 9. **权限控制**:文件操作可能涉及权限控制,例如读取、写入、执行权限。在Java...
Java提供了一些内建的工具,如`java.lang.management`包,它包含了`OperatingSystemMXBean`接口,可以获取到关于操作系统的一系列信息,包括CPU使用率。`ManagementFactory`类可以获取到这个MBean的实例,然后调用其...
Java NIO,即New IO,引入了选择器(Selector)和通道(Channel)的概念,使得程序可以同时监控多个通道的状态,而不需要为每个连接创建一个单独的线程。这极大地提高了服务器处理大量并发连接的能力,降低了系统资源的...
在项目中,你可能需要读取配置文件、存储数据或与其他系统进行数据交换,因此了解IO和NIO的使用至关重要。 5. **异常处理** 异常处理是Java编程中不可或缺的部分,它帮助我们优雅地处理程序运行时可能出现的问题。...
`java.io.File`和`java.nio`包提供了文件操作接口,而在Android框架层,可以使用`Environment.getExternalStorageDirectory()`获取SD卡路径。 三、源程序实现要点 1. **设备探测**:程序首先需要找到SD卡对应的...
配合Java开发,掌握Linux操作系统的基本命令,如文件管理、进程控制、网络操作等,可以提升开发者的系统操作能力,特别是在服务器端的部署和调试。 10. **开发工具与框架** 使用IDE如IntelliJ IDEA或Eclipse,...
3. **IO与NIO**:Java的输入输出(IO)模型和非阻塞IO(NIO)模型,包括`BufferedReader`、`FileInputStream`、`FileOutputStream`、`Channel`、`Selector`和`Pipe`等。 4. **反射机制**:利用反射动态访问和修改类...
- Linux系统下的内核参数用于优化系统性能和内存管理。 #### IO模型 - Linux下的IO模型包括阻塞IO、非阻塞IO、IO复用、信号驱动IO和异步IO。 #### Linux命令 - Linux命令用于日常的系统管理和操作,如文件操作、...