编写Java程序,使用Java NIO模型中的FileChannel实现文件的复制功能。
时间: 2024-05-14 09:17:01 浏览: 120
java 使用IO流实现文件的复制
5星 · 资源好评率100%
好的,下面是使用Java NIO模型中的FileChannel实现文件复制的代码实现:
```java
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class FileCopyDemo {
public static void main(String[] args) throws Exception {
FileInputStream inputStream = new FileInputStream("source.txt");
FileChannel inputChannel = inputStream.getChannel();
FileOutputStream outputStream = new FileOutputStream("target.txt");
FileChannel outputChannel = outputStream.getChannel();
ByteBuffer buffer = ByteBuffer.allocate(1024);
while (inputChannel.read(buffer) != -1) {
buffer.flip();
outputChannel.write(buffer);
buffer.clear();
}
inputChannel.close();
outputChannel.close();
inputStream.close();
outputStream.close();
System.out.println("File copied successfully!");
}
}
```
以上代码中,我们首先定义了一个FileInputStream对象,并通过调用getChannel()方法创建一个FileChannel对象来进行文件读取。接着我们定义了一个FileOutputStream对象,并通过调用getChannel()方法创建一个FileChannel对象来进行文件写入。
然后我们使用allocate()方法创建一个1024字节大小的ByteBuffer对象。在while循环中,我们不断从inputChannel中读取数据到buffer中,然后将buffer的position设置为0,limit设置为buffer的当前position,接着通过write()方法将buffer中的数据写入到outputChannel中。
最后,我们需要关闭输入输出流和FileChannel对象,并输出文件复制成功的提示信息。
阅读全文