请使用nio复制大文件
时间: 2024-03-05 21:54:49 浏览: 56
好的,以下是使用 NIO 复制大文件的示例代码:
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class NIOFileCopy {
public static void main(String[] args) throws IOException {
File sourceFile = new File("source.txt");
File destFile = new File("dest.txt");
try (FileInputStream fis = new FileInputStream(sourceFile);
FileOutputStream fos = new FileOutputStream(destFile);
FileChannel sourceChannel = fis.getChannel();
FileChannel destChannel = fos.getChannel()) {
ByteBuffer buffer = ByteBuffer.allocate(1024 * 1024);
while (sourceChannel.read(buffer) != -1) {
buffer.flip();
destChannel.write(buffer);
buffer.clear();
}
System.out.println("File copied successfully using NIO!");
}
}
}
```
在上面的示例代码中,我们使用了 Java NIO 的 `FileChannel` 类和 `ByteBuffer` 类来复制文件。首先,我们创建了一个缓冲区,然后将文件内容读取到缓冲区中,并将缓冲区中的内容写入目标文件中。
需要注意的是,我们使用了 `try-with-resources` 语句来自动关闭文件流和通道,这是一种更加简洁和安全的方式来处理文件 IO。同时,我们也使用了 `ByteBuffer` 的 `flip()` 和 `clear()` 方法来重置缓冲区的状态,以便下一次读取和写入操作。
阅读全文