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         }
时间: 2024-10-28 03:11:06

IO练习 两个文件夹进行copy(含子目录)的相关文章

Path,Files巩固,题目:从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中

这个题目用传统的File,InputStream可以做,但是如果用Files,Path类做,虽然思路上会困难一些,但是代码简洁了很多,以下是代码: import java.io.IOException; import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.Simple

从键盘接收两个文件夹路径,把其中一个文件夹(包含内容),拷贝到另一个文件夹中

package cn.it.text; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.Scanner; /* * 1.从键盘接收两个文件夹路径,把其中一个文件夹(包含内容) * 拷贝到另一个文件

一个分区挂载到两个文件夹怎样删除还有一个

有时候我们会不小心挂载一个分区到两个文件夹以下,我们能够通过一下方式删除: sudo vi /etc/fstab ,删除/dev/xvdb1 /mnt ext3 defaults 0 0 这行即可 不会出现什么问题的,留着也没事

Java开发环境部署2.下载安装java jdk 2.1下载与安装 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载完后开始安装。注意,安装的路径不能变!!!反正笔者前两次改了安装路径都装不成。 JDK默认安装成功后,会在系统目录下出现两个文件夹,一个代表jdk,一个代表jre。

操作系统:win10 64biteclipse版本:Eclipse Mars (4.5),Eclipse IDE for Java EE DeveloperJava JDK版本:jdk-7u79-windows-x64SDK版本:24.4.1版ADT版本:23.0.4版 1.下载安装java jdk1.1下载与安装 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html JDK默认安装成功后,会在系统目录下出

按创建日期删除指定日期之前的文件夹及文件夹下的所有子目录

转载void CTestDlg::DeleteDirectory(CString strDir) { if(strDir.IsEmpty()) return; //首先删除文件及子文件夹 CFileFind ff; BOOL bFound = ff.FindFile(strDir+"\\*", 0); while(bFound) { bFound = ff.FindNextFile(); CString filename = ff.GetFileName(); if(filename=

使用JAVA实现比较两个文件夹下的文件新增和修改情况,并复制到新的目录(实现增量更新项目)

- 0x00 前言 之前工作的时候,经常会有客户提交BUG或者新增一个功能等需求.于是我就会在我本地修改代码,然后再打包替换客户的项目.比较麻烦的是,每次更新都需要去SVN看看都改了哪些文件,新增了哪些文件,一个一个去找,然后打包,给客户更新,有些时候一不小心就漏了或者搞错了,非常的烦.其实我一直都想做的事情就是,写一个程序,让程序去实现对比新旧两个项目,然后把新的项目多出来的文件或者变更过的文件复制出来,这样就能省去我好多工作,主要是不用人工一个个的去比对.. 太烦了. - 0x01 思路 1

java中用IO流,拷贝文件夹中的文件

package 拷贝文件; import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream

利用Io流实现格式化文件夹

package homework_8_1; import java.io.File;import java.util.Scanner; /* * 使用递归调用将指定的文件拷贝到创建的路径下 * 1.写一个递归的方法,判断是文件还是文件夹,然后拷贝到创建的文件夹中 */ public class HomeWork_8_1_CopyFile { public static void copyFile(File fu ,File zi){ //判断该文件是否存在 if(!zi.exists()){ z

java IO流实现删除文件夹以及文件夹中的内容

这篇主要是对IO文件流对文件常用处理中的删除文件夹,平时我们直接删除文件夹既可以删除里面的全部内容. 但是java在实现删除时,只能是文件才会被删除. 所以这里需要定义一个方法,来递归调用方法(递归调用,就是在方法的内部调用自己),实现文件夹里面的全部文件删除 注意:做这个测试的时候,一定要备份,如果删除成功就不会回复了 结果如下: