java代码实现文件夹拷贝,文件夹可能包含文件夹和文件
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
/**
* @author 孙潇
* 文件夹拷贝(文件内含有文件和文件夹)
*
*/
public class CopyDirectory {
public static void main(String[] args) {
copy("F:\\myjava","E:\\myjava");
System.out.println("文件拷贝完成!");
}
private static void copy(String src, String des) {
File file1=new File(src);
File[] fs=file1.listFiles();
File file2=new File(des);
if(!file2.exists()){
file2.mkdirs();
}
for (File f : fs) {
if(f.isFile()){
fileCopy(f.getPath(),des+"\\"+f.getName()); //调用文件拷贝的方法
}else if(f.isDirectory()){
copy(f.getPath(),des+"\\"+f.getName());
}
}
}
/**
* 文件拷贝的方法
*/
private static void fileCopy(String src, String des) {
BufferedReader br=null;
PrintStream ps=null;
try {
br=new BufferedReader(new InputStreamReader(new FileInputStream(src)));
ps=new PrintStream(new FileOutputStream(des));
String s=null;
while((s=br.readLine())!=null){
ps.println(s);
ps.flush();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(br!=null) br.close();
if(ps!=null) ps.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}