首页 > 代码库 > IO练习 两个文件夹进行copy(含子目录)
IO练习 两个文件夹进行copy(含子目录)
1 //从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中 2 @Test 3 public void t6(){ 4 //1) 接受两个文件夹路径 5 //1.创建一个 字符缓冲流 6 7 BufferedReader br = null; 8 try { 9 br = new BufferedReader(new InputStreamReader(System.in)); 10 System.out.println("请输入第一个文件夹路径"); 11 //2.读取2行字符串 12 String str1 = br.readLine(); 13 System.out.println("请输入第二个文件夹路径"); 14 String str2 = br.readLine(); 15 File file1 = new File(str1); 16 File file2 = new File(str2); 17 file2.mkdir(); 18 File[] listFiles = file1.listFiles(); 19 for(int i=0;i<listFiles.length;i++){ 20 if(listFiles[i].isFile()){ 21 File target = new File(file2, listFiles[i].getName()); 22 copyFile(listFiles[i], target); 23 } 24 if(listFiles[i].isDirectory()){ 25 //文件夹下面还是个文件夹,这个时候去拿到文件夹的路径 26 String source1 = str1+File.separator+listFiles[i].getName(); 27 String target1 = str2+File.separator+listFiles[i].getName(); 28 copyDir(source1,target1); 29 } 30 } 31 40 } catch (FileNotFoundException e) { 41 e.printStackTrace(); 42 } catch (IOException e) { 43 e.printStackTrace(); 44 }finally{ 45 try { 46 br.close(); 47 } catch (IOException e) { 48 // TODO Auto-generated catch block 49 e.printStackTrace(); 50 } 51 } 52 } 53 private void copyDir(String source1, String target1) throws IOException { 54 File source = new File(source1); 55 File target = new File(target1); 56 target.mkdirs(); 57 File[] files = source.listFiles(); 58 for(int a=0;a<files.length;a++){ 59 if(files[a].isFile()){ 60 File target2 = new File(target,files[a].getName()); 61 copyFile(files[a], target2); 62 } 63 if(files[a].isDirectory()){ 64 String source3 = source1 +File.separator + files[a].getName(); 65 String target3 = target1 +File.separator + files[a].getName(); 66 //递归,对还是文件夹的文件夹在调用copyDir的方法,上面的if条件是递归的出口 67 copyDir(source3,target3); 68 } 69 } 70 } 71 private void copyFile(File file, File target) throws IOException { 72 BufferedInputStream bis = new BufferedInputStream( 73 new FileInputStream(file)); 74 BufferedOutputStream bos = new BufferedOutputStream( 75 new FileOutputStream(target)); 76 byte[] buf = new byte[1024]; 77 int len = 0; 78 while((len=bis.read(buf))!= -1){ 79 bos.write(buf, 0,len); 80 } 81 bis.close(); 82 bos.close(); 83 }
IO练习 两个文件夹进行copy(含子目录)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。