java中文件拷贝的几种方式
1.使用文件工具类静态方法直接拷贝
public static void copyFileByStream(File file, File fileTo) throws IOException { Files.copy(file.toPath(), fileTo.toPath()); }
2.传统FileOutPutStream拷贝
//传统文件拷贝方式,通过FileInputStream和FileOutputStream实现 public static void copyFileByStream(File file, File fileTo) throws IOException { InputStream in = new FileInputStream(file); OutputStream out = new FileOutputStream(fileTo); byte[] buffer = new byte[1024]; int length; while ((length = in.read(buffer)) > 0) { out.write(buffer, 0, length); } }
3.使用nio的“管道思想”,通过transferFrom和transferTo实现
//基于nio的transferTo和transferFrom实现 public static void copyFileByChannel(File file, File fileTo) throws IOException { FileChannel fileChannel = new FileInputStream(file).getChannel(); FileChannel fileChannelTo = new FileOutputStream(fileTo).getChannel(); for (long count = fileChannel.size(); count > 0; ) { long transferred = fileChannel.transferTo(fileChannel.position(), count, fileChannelTo); count -= transferred; } }