A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;

  5. /*
  6. * 需求:复制多级文件
  7. * 思路:使用File关联源文件和目的文件,目的文件和源文件名一样,只是盘路径不一样
  8. *                 定义一个方法,接受的参数是源文件和目的文件
  9. *                 使用listFiles方法,将源文件存入File数组中
  10. *                 使用高级for遍历File数组,
  11. *                 在遍历过程中,每次遍历关联不同路径下的同级目录文件或者文件夹
  12. *                 判断遍历的文件是否是目录
  13. *                 如果是,同级文件创建文件夹
  14. *                 使用递归,调用函数本身,参数是遍历的文件和同级目录文件
  15. *                 如果不是,判断是否存在此文件,如果不存在,创建文件
  16. *                 因为可能不是纯文本,使用字节流读取操作文件,记得关闭底层资源
  17. */
  18. public class Copy_1
  19. {
  20.         public static void main(String[] args) throws IOException
  21.         {
  22.                 File source = new File("G:\\a - 副本");
  23.                 File dest = new File("d:", source.getName());
  24.                
  25.                 if(!dest.exists())//这一步必须要有,否则系统出错-“系统找不到指定路径”
  26.                 {
  27.                         dest.mkdir();
  28.                 }
  29.                
  30.                 copyFile(source, dest);
  31.         }

  32.         private static void copyFile(File source, File dest) throws IOException
  33.         {
  34.                 File[] files = source.listFiles();
  35.                
  36.                 for(File file : files)
  37.                 {
  38.                         System.out.println(file);
  39.                         File newFile = new File(dest, file.getName());
  40.                        
  41.                         if(file.isDirectory())
  42.                         {
  43.                                 if(!newFile.exists())
  44.                                 {
  45.                                         newFile.mkdir();
  46.                                 }
  47.                                
  48.                                 copyFile(file, newFile);
  49.                         }else
  50.                         {
  51.                                 FileInputStream fis = new FileInputStream(file);
  52.                                 FileOutputStream fos = new FileOutputStream(newFile);
  53.                                
  54.                                 byte[] bt = new byte[1024];
  55.                                 int len = 0;
  56.                                
  57.                                 while((len=fis.read(bt))!=-1)
  58.                                 {
  59.                                         fos.write(bt, 0, len);
  60.                                 }
  61.                                
  62.                                 fis.close();
  63.                                 fos.close();
  64.                         }
  65.                 }
  66.         }
  67. }















复制代码

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

5 个回复

正序浏览
这个例子真心不错,我之前做的是复制所有的文件,但是没有建立相应的文件夹
回复 使用道具 举报
递归方法里 放new , 看着有点不爽 囧 , 额 别在意, 我的习惯. -0 -
回复 使用道具 举报
为什么不用缓冲呢?
回复 使用道具 举报
不错啊!
回复 使用道具 举报
不错啊!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马