package CE.lecky; import java.io.*; import java.util.*; /** *复制文件 *by lecky.lee *2006-06-08 */ public class CopyFile { String intiPathOut; //初始输出路径 int cnt=0; //计数器,用于判定是否首次调用copyFiles方法 public void copyFiles(String pathIn,String pathOut) throws IOException { File f= new File(pathIn); if(!f.exists()){ System.out.println ("源文件路径不存在"); System.exit(5); } if(cnt==0){ File out = new File(this.intiPathOut); out.mkdir(); //首次调用执行,创建初始输出目录 } if(f.isFile()){ this.copyFile(f,pathOut); } else{ this.copyDir(f,pathOut); } cnt++; } public void copyDir(File f,String pathOut) throws IOException{ System.out.println(f.getPath()); pathOut=this.intiPathOut+f.getPath().substring(2); //修改输出路径字符串,将子文件夹相对路径追加至初始输出路径 //substring用于去掉路径中的驱动器盘符 File dir = new File(pathOut); dir.mkdir(); File temp[]=f.listFiles(); for(int i=0;i this.copyFiles(temp[i].toString(),pathOut); //递归调用此方法 } } public void copyFile(File f,String pathOut) throws IOException{ System.out.println(f.getPath()); DataInputStream in = new DataInputStream( new BufferedInputStream( new FileInputStream(f.getPath()))); byte[] date = new byte[in.available()]; in.read(date); DataOutputStream out = new DataOutputStream( new BufferedOutputStream( new FileOutputStream(pathOut+"/"+f.getName()))); out.write(date); in.close(); out.close(); } public static void main(String[] args) throws IOException { CopyFile cp = new CopyFile(); cp.intiPathOut="D:/11111111"; cp.copyFiles("D:/lecky","D:/11111111"); System.out.println ("复制完毕"); } }