1.首先确定源文件的地址,还有拷贝到哪的目标地址,
2.然后判断目标地址是否有该文件夹,如果没有就创建文件夹,
3.使用递归访问源文件夹内的全部文件包括子文件夹,
4.判断是文件夹就继续递归调用继续访问该文件夹的内容,是文件就调用读写的方法,
5.然后创建流对象进行读和写到目标地址。
public static void main(String[] args) {
Copy("D:\\src", "D:\\des");
}
public static void Copy(String src, String des) {
//建立源文件地址对象和目标地址对象
File fsrc = new File(src);
File fdes = new File(des);
//列出文件目录
File[] arr = fsrc.listFiles();
//判断地址是否存在文件夹,没有就创建
if(!fdes.exists()) {
fdes.mkdirs();
}
for(File f : arr) {
if(f.isDirectory()) {
//递归调用
Copy(f.getPath(), des+"\\"+f.getName());
} else {
//调用读写的方法
ReadWrite(f.getPath(), des+"\\"+f.getName());
}
}
return true;
/*
for(int i=0; i < arr.length; i++) {
if(arr[i].isDirectory()) {
CopyMake(arr[i].getPath(), des+"\\"+arr[i].getName());
} else {
Copy(arr[i].getPath(), des+"\\"+arr[i].getName());
}
}*/
}
public static void ReadWrite(String src, String des) {
FileReader fr = null;
FileWriter fw = null;
BufferedReader bufr = null;
BufferedWriter bufw = null;
try{
fr = new FileReader(src);
fw = new FileWriter(des);
bufr = new BufferedReader(fr);
bufw = new BufferedWriter(fw);
String len;
while((len = bufr.readLine()) != null) {
bufw.write(len);
bufw.newLine();
bufw.flush();
}
} catch(IOException e) {
System.out.println("User: "+e.toString());
} finally {
try {
if(bufr != null) {
bufr.close();
}
if(bufw != null) {
bufw.close();
}
} catch(IOException e) {
System.out.println("User: "+e.toString());
}
}
}