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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 在学野马 中级黑马   /  2014-10-5 07:39  /  1534 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 在学野马 于 2014-10-5 10:10 编辑

多级文件夹复制怎么做

14 个回复

倒序浏览
递归遍历文件夹,是文件则将文件放到list中,是文件夹则将递归当前文件。或者使用NIO中的知识,这部分知识不是黑马考试范围。
回复 使用道具 举报
yueyazhishang 发表于 2014-10-5 08:40
递归遍历文件夹,是文件则将文件放到list中,是文件夹则将递归当前文件。或者使用NIO中的知识,这部分知识 ...

如果按原来的层级复制呢?
回复 使用道具 举报
yueyazhishang 发表于 2014-10-5 08:40
递归遍历文件夹,是文件则将文件放到list中,是文件夹则将递归当前文件。或者使用NIO中的知识,这部分知识 ...

以前黑马的学员 考过这样的题目
回复 使用道具 举报
yueyazhishang 发表于 2014-10-5 08:40
递归遍历文件夹,是文件则将文件放到list中,是文件夹则将递归当前文件。或者使用NIO中的知识,这部分知识 ...

集合框架要考吗
回复 使用道具 举报
给你个思路!文件夹不用赋值,在删除文件夹后,在创建这个文件夹起一相同的名字,在把里面的文件通过流赋值进去
回复 使用道具 举报
杜工 高级黑马 2014-10-5 09:32:09
7#
多看几遍视频。老毕有讲。。。
回复 使用道具 举报
最主要是递归思想吧,其他的都是定义方法的问题
回复 使用道具 举报
  1. CopyDirs.java
复制代码
回复 使用道具 举报
  1. //多级文件夹的复制
  2. import java.io.*;

  3. import org.w3c.dom.ranges.RangeException;
  4. public class CopyDirs {
  5.         public static void main(String[] args) {
  6.                 File source = new File("c:\\yanshi");
  7.                 File target = new File("f:\\");
  8.                 copyDir(source,target);
  9.         }
  10.         //定义一个方法copyDir,先建立起文件夹 如果是文件夹就继续往下查找是文件就复制
  11.         private static void copyDir(File source,File target){
  12.                 //先进行判断,看看是不是文件夹
  13.                 if(source.isDirectory()){
  14.                 File dir = new File(target,source.getName());
  15.                 dir.mkdirs();//在F盘下已经建好了文件夹
  16.                 //文件夹建好了,现在要看看source里的东西了 呵呵,listFiles方法
  17.                 File[] files = source.listFiles();
  18.                 //哈哈 东西出来了怎么办,必须遍历啊 增强for循环出场
  19.                 for(File file:files){
  20.                         //这时候要查看每个file是文件还是文件夹  继续调用copyDir 所谓递归是也
  21.                         copyDir(file,dir);
  22.                 }
  23.                 }else{
  24.                         //如果是文件怎么办呢,好办啊,创建一个复制文件file的方法
  25.                         File file = new File(target,source.getName());
  26.                         copyFile(source,file);
  27.                 }
  28.         }
  29.         //定义一个复制文件的方法  因为不晓得文件是啥类型的所以选字节流
  30.         private static  void copyFile(File source,File file){
  31.                 FileInputStream fis= null;
  32.                 FileOutputStream fos = null;
  33.                 //要处理异常喽
  34.                 try {
  35.                         fis = new FileInputStream(source);
  36.                         fos = new FileOutputStream(file );
  37.                         //定义一个字符数组缓存 这样效率更高
  38.                         byte[] bytes = new byte[1024];
  39.                         int len = 0 ;
  40.                         while((len = fis.read(bytes))!=-1){
  41.                                 fos.write(bytes ,0,len);
  42.                         }
  43.                         //剩下的都是无脑异常处理及关流了
  44.                 } catch (Exception e) {
  45.                         e.printStackTrace();
  46.                         throw new RuntimeException("复制多级文件夹失败");
  47.                 }finally{
  48.                         try {
  49.                                 if(fos!=null)
  50.                                         fos.close();
  51.                         } catch (Exception e) {
  52.                                 e.printStackTrace();
  53.                         }finally{
  54.                                 try {
  55.                                         if(fis!=null)
  56.                                                 fis.close();
  57.                                 } catch (Exception e) {
  58.                                         e.printStackTrace();
  59.                                 }
  60.                         }
  61.                 }
  62.         }
  63. }
复制代码

希望对你能有帮助

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0

File dir = new File(target,source.getName());这句怎么理解
回复 使用道具 举报
file文件封装下的路径名
回复 使用道具 举报
在学野马 发表于 2014-10-5 12:21
File dir = new File(target,source.getName());这句怎么理解

target指f盘 source.getName() 指source里文件的后缀名 共同组成目的文件file文件封装下的路径名 目的文件file现在是没有内容的他等待着复制内容进去
回复 使用道具 举报 1 0

当然要考...重点考...
回复 使用道具 举报
rel4x 中级黑马 2014-10-5 19:59:41
15#
学习了。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马