package com.softeem.io.test; import java.io.*; /** * @author xuziqian * 拷贝文件夹 */ public class CopyFiles { /** * @return * */ public String getsrcpath() { InputStreamReader in1=new InputStreamReader(System.in) ; BufferedReader buf1=new BufferedReader(in1); System.out.println("请输入一个你要拷贝的文件或文件夹:"); String s=null; try { s=buf1.readLine(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return s; } public String getdespath() { InputStreamReader in1=new InputStreamReader(System.in); BufferedReader buf1=new BufferedReader(in1); System.out.println("请输入目标文件夹:"); String s=null; try { s=buf1.readLine(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return s; } public void testCopy(String src,String des) { FileReader fr=null; try { fr=new FileReader(src); BufferedReader buf=new BufferedReader(fr); FileWriter fw=new FileWriter(des); BufferedWriter buw=new BufferedWriter(fw); String s=null; while((s=buf.readLine())!=null) { buw.write(s); buw.newLine(); } buf.close(); buw.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void copyf(String src,String des) { File file1=new File(src); File file2=new File(des); if(!(file2.isDirectory())) { System.out.println("你必须提供一个文件夹作为目标文件"); des=this.getdespath(); } else { if(file1.isFile()) { file2=new File(file2.getPath()+"/"+file1.getName()); testCopy(file1.getPath(),file2.getPath()); }else if(file1.isDirectory()) { File file[]=file1.listFiles(); File fi=null; if(file.length<=0) { fi=new File(file2.getPath()+"/"+file1.getName()); fi.mkdir(); }else { file2=new File(file2.getPath()+"/"+file1.getName()+"/"+file[0].getName()); fi=new File(file2.getParent()); if(!fi.exists()){ fi.mkdir(); } } for(int i=0;i<file.length;i++) { if(file[i].isFile()) { file2=new File(fi.getPath()+"/"+file[i].getName()); testCopy(file[i].getPath(),file2.getPath()); } else if(file[i].isDirectory()){ String s=file[i].getName(); copyf(file[i].getPath(),fi.getPath()); } } } } } public static void main(String args[]) { CopyFiles a=new CopyFiles(); a.copyf(a.getsrcpath(), a.getdespath()); } }