代码实例
package com.csdn;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
public class ReadFileCope {
/**
* @param 递归复制文件及文件夹结构
*/
public static void main(String[] args) {
String path = "F:\\ARCHROOT\\TJPdf";
String copyPath = "F:\\ARCHROOTCOPY";
copyFolder(new File(path),new File(copyPath));
}
/**
* @param sourceFile 原文件
* @param destFile 目标文件
* 递归复制
*/
public static void copyFolder(File sourceFile, File destFile){
//文件夹
if(sourceFile.isDirectory()){
File newFolder = new File(destFile,sourceFile.getName());
newFolder.mkdirs();
File[] fileArray=sourceFile.listFiles();
for (File file : fileArray) {
copyFolder(file,newFolder);
}
//文件
}else{
File newFile=new File(destFile,sourceFile.getName());
copyFile2(sourceFile,newFile);
}
}
/**
* @param file 原文件
* @param fileCopy 目标文件
* 复制文件 方法1
*/
public static void copyFile1(File file,File copyFile){
FileInputStream is = null;
FileOutputStream os = null;
try {
is = new FileInputStream(file);
os = new FileOutputStream(copyFile);
int len;
byte [] bys = new byte [1024];
while((len=is.read())!=-1){
os.write(bys, 0, len);
}
}catch (IOException e) {
e.printStackTrace();
}finally{
try {
is.close();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 效率高的复制
* @param file 原文件
* @param fileCopy 目标文件
*/
public static void copyFile2(File file,File fileCopy){
FileChannel inputChannel = null;
FileChannel outputChannel = null;
try {
inputChannel = new FileInputStream(file).getChannel();
outputChannel = new FileOutputStream(fileCopy).getChannel();
outputChannel.transferFrom(inputChannel, 0, inputChannel.size());
} catch (IOException e) {
e.printStackTrace();
}
}
}