在使用Files.copy时,如果复制的文件较大,则可能会因为内存不足而出错。为了避免这个问题,可以使用Java NIO中的通道以更有效的方式复制文件。以下是一个示例:
public static void copyLargeFile(Path source, Path destination) throws IOException {
try (FileChannel sourceChannel = FileChannel.open(source);
FileChannel destinationChannel = FileChannel.open(destination, StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE);) {
sourceChannel.transferTo(0, sourceChannel.size(), destinationChannel);
通过使用FileChannel的transferTo方法,可以将文件通道中的数据直接传输到另一个文件通道中,而无需将所有数据加载到内存中。到达文件末尾后,方法将自动关闭文件通道。可以根据需要将此方法进行定制,以满足复制大型文件的要求。