作者在 2011-12-11 00:22:33 发布以下内容
FileChannel类中有一方法transferFrom()可以方便完成文件的复制。详细介绍请查JDK文档。
据JDk文档上介绍说:“与从源通道读取并将内容写入此通道的简单循环语句相比,此方法可能高效得多。”
程序中如有用到文件复制的时候,用此方法试吧。
try {
// 获得源文件的通道
FileChannel srcChannel = new FileInputStream("srcFilename").getChannel();
// 获得目的文件通道
FileChannel dstChannel = new FileOutputStream("dstFilename").getChannel();
// 将源文件内容复制到目的文件
dstChannel.transferFrom(srcChannel, 0, srcChannel.size());
// 关闭通道
srcChannel.close();
dstChannel.close();
} catch (IOException e) {
}
// 获得源文件的通道
FileChannel srcChannel = new FileInputStream("srcFilename").getChannel();
// 获得目的文件通道
FileChannel dstChannel = new FileOutputStream("dstFilename").getChannel();
// 将源文件内容复制到目的文件
dstChannel.transferFrom(srcChannel, 0, srcChannel.size());
// 关闭通道
srcChannel.close();
dstChannel.close();
} catch (IOException e) {
}
对应的,FileChannel类中也有transferTo()方法,从字面上可以猜知,该方法亦能完成文件的复制,只要这样即可:
srcChannel.transferTo(0, srcChannel.size(),dstChannel);
感觉比在IO中使用繁琐的循环读写方便多了。Y(^_^)Y