java中如果copy一个几十个g的文件,用什么办法最优
时间: 2024-03-21 07:39:53 浏览: 22
在Java中,如果要拷贝大文件,最好的方式是使用NIO(New IO)中的文件通道(FileChannel)实现文件拷贝。使用文件通道可以将文件拷贝操作交由操作系统的文件系统完成,从而避免了Java IO中的一些性能瓶颈,可以显著提高文件拷贝的效率。
以下是一个使用FileChannel拷贝文件的示例代码:
```java
import java.io.*;
import java.nio.channels.FileChannel;
public class FileCopy {
public static void main(String[] args) throws IOException {
File sourceFile = new File("/path/to/source/file");
File destFile = new File("/path/to/destination/file");
try (FileInputStream inputStream = new FileInputStream(sourceFile);
FileOutputStream outputStream = new FileOutputStream(destFile)) {
// 获取文件通道
FileChannel inChannel = inputStream.getChannel();
FileChannel outChannel = outputStream.getChannel();
// 使用transferFrom方法拷贝文件
long transferred = 0;
long size = inChannel.size();
while(transferred < size){
transferred += outChannel.transferFrom(inChannel, transferred, size - transferred);
}
}
}
}
```
需要注意的是,使用文件通道拷贝文件时,需要手动创建输入流和输出流,并且在使用完毕后需要手动关闭文件通道、输入流和输出流。