package cn.com.nio;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class CopyFile {
/**
* NIO实现的文件复制功能
* @param sourceFile 源文件路径
* @param targetFile 目标文件路径
*/
public void readerFile(String sourceFile,String targetFile) throws Exception {
// 第一步:获取通道
FileInputStream fin = new FileInputStream(sourceFile); //输入
FileOutputStream fou = new FileOutputStream(targetFile); //输出
FileChannel fc = fin.getChannel();
FileChannel fo = fou.getChannel();
// 第二步:创建缓冲区
ByteBuffer buffer = ByteBuffer.allocate(1024);
while (true) {
buffer.clear();
int r = fc.read(buffer);
if (r == -1) {
break;
}
buffer.flip();
fo.write(buffer);
}
}
public static void main(String[] args) throws Exception {
CopyFile test = new CopyFile();
test.readerFile("D:/Test/TypesInByteBuffer.java","D:/Test.txt");
}
}
分享到:
相关推荐
这个文件很可能是一个示例程序,演示了如何使用Java NIO进行高效的大文件复制。在传统的Java I/O中,我们通常使用InputStream和OutputStream进行文件复制,而这种方式需要不断读写,造成大量的上下文切换,效率较低...
- **直接内存(Direct Byte Buffer)**:Java NIO中的直接缓冲区可以分配在JVM堆外内存,减少从Java对象到本机内存的拷贝,从而实现零拷贝。 - **mmap(Memory Mapped File)**:Java的FileChannel提供了一个映射...
总结来说,利用Java NIO进行文件复制,通过`FileChannel`和`ByteBuffer`的配合,可以实现高效且简洁的文件复制功能。这不仅提高了程序的执行效率,也为处理大量并发I/O请求提供了可能。在`NioDemo.java`这个例子中,...
- Java NIO提供了一组文件系统操作API,例如FileChannel用于读写文件,MappedByteBuffer实现了内存映射文件,可以直接通过内存访问文件内容,提高了读写速度。 4. **缓冲区的分类** - **ByteBuffer**:用于处理...
2. **文件操作**:NIO提供了高效、灵活的文件读写能力,特别是对于大数据处理,如日志分析、文件复制等。 3. **网络编程**:在网络通信中,NIO可以实现高效的客户端与服务器之间的数据传输,如HTTP、FTP服务器。 4...
本项目“Large-File-Processing-master_javanio_java大文件处理_”显然专注于通过Java NIO实现大文件处理,下面我们将详细探讨相关的知识点。 1. **Java NIO基础**:NIO的核心组件包括通道(Channels)、缓冲区...
根据提供的文件信息,我们可以提取并总结出关于Java NIO(New Input/Output)的重要知识点。 ### Java NIO 概述 Java NIO 是 Java 平台的一个重要特性,首次出现在 Java 1.4 版本中。它为 Java 开发者提供了一套...
`CopyFile.java`可能是用于对比两者的文件复制性能的代码示例。在IO中,这可能涉及到使用`FileInputStream`和`FileOutputStream`的read和write方法;而在NIO中,可能使用`FileChannel`的transferTo或transferFrom...
文件复制是NIO的一个经典应用。在示例中,可能会有以下步骤: 1. 打开源文件和目标文件的FileChannel。 2. 创建一个足够大的ByteBuffer,用于数据传输。 3. 使用`channel.transferTo()`或`channel.transferFrom()`...
1. **文件操作**:使用FileChannel进行文件的读写,例如将一个文件复制到另一个文件。 2. **网络通信**:使用SocketChannel和ServerSocketChannel进行客户端和服务器端的连接与数据传输。 3. **多路复用**:通过...
Java提供了丰富的I/O API,如`java.nio`包中的类,它们提供了更强大且更安全的文件操作功能。例如,我们可以使用`Files.copy()`方法复制文件,而无需依赖操作系统命令: ```java Path sourcePath = Paths.get(...
Java NIO(New IO)是Java 1.4版本引入的一个新特性,它为Java程序...对于压缩包中的"ffc"文件,很可能是实现这个快速文件复制功能的Java代码,通过阅读和理解这个代码,我们可以更深入地学习和掌握Java NIO的精髓。