拷贝文件或文件夹
/**
* 拷贝文件
*
* @param source 源文件
* @param target 目标文件
*/
public void copyFile(String source, String target) {
File sourceFile = new File(source);
if (!sourceFile.exists()) {
return;
}
File targetFile = new File(target);
if (sourceFile.isFile()) {
copyFromChanel(sourceFile, targetFile);
return;
}
if (!targetFile.exists()) {
targetFile.mkdirs();
}
for (File file: sourceFile.listFiles()) {
copyFile(file.getAbsolutePath(), target + File.separator + file.getName());
}
}
利用文件管道拷贝文件
/**
* 利用文件管道拷贝文件
*
* @param source 源文件
* @param target 目标文件
*/
public void copyFromChanel(File source, File target) {
FileInputStream fis = null;
FileOutputStream fos = null;
FileChannel fci = null;
FileChannel fco = null;
try {
fis = new FileInputStream(source);
fos = new FileOutputStream(target);
fci = fis.getChannel();
fco = fos.getChannel();
fci.transferTo(0, fci.size(), fco);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fis != null) fis.close();
if (fci != null) fci.close();
if (fos != null) fos.close();
if (fco != null) fco.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}