Java复制文件夹主要用到的就是IO流,先判断是否是文件,如果是文件则复制文件到当前目录,如果是文件夹则利用递归的方式去访问文件夹并复制。
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFloder {
static String url1 = "F://DCIM";//要复制的文件夹
static String url2 = "F://app";//目标文件夹
public static void main(String[] args) {
File file1 = new File(url2);
file1.mkdir();
File file2 = new File(url1);
File [] files = file2.listFiles();
for (int i = 0; i < files.length; i++) {
//判断是否是文件,如果是文件就复制到当前文件夹下
if(files[i].isFile()){
copyFile(files[i], new File(url2+File.separator+files[i].getName()));
}
//判断是否是文件夹,如果是文件夹就调用复制文件夹的方法
if(files[i].isDirectory()){
String sourceDir=url1+File.separator+files[i].getName();//资源文件夹名
String targetDir=url2+File.separator+files[i].getName();//目标文件夹名
copyDirectiory(sourceDir, targetDir);
}
}
}
//复制文件
public static void copyFile(File sourcefile,File targtFile){
try {
FileInputStream input = new FileInputStream(sourcefile);
BufferedInputStream bi = new BufferedInputStream(input);
FileOutputStream fs = new FileOutputStream(targtFile);
BufferedOutputStream bo = new BufferedOutputStream(fs);
byte [] b = new byte[1024];
int len = 0;
while((len=bi.read(b))!=-1){
bo.write(b, 0, len);
}
input.close();
bi.close();
fs.close();
bo.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 复制文件夹,递归的方式访问文件夹
* @param sourceDir
* @param targetDir
*/
public static void copyDirectiory(String sourceDir, String targetDir){
File file1 = new File(targetDir);
file1.mkdirs();
File file2 = new File(sourceDir);
File[] files = file2.listFiles();
for (int i = 0; i < files.length; i++) {
//判断是否是文件,如果是文件则调用复制文件的方法
if(files[i].isFile()){
File sourceFile = files[i];
File targetFile = new File(new File(targetDir).getAbsolutePath()+File.separator+sourceFile.getName());
copyFile(sourceFile,targetFile);
}
//判断是否是文件夹,如果是文件夹则递归
if(files[i].isDirectory()){
String dir1=sourceDir + File.separator + files[i].getName();
String dir2=targetDir + File.separator + files[i].getName();
copyDirectiory(dir1, dir2);
}
}
}
}