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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘佳禹 中级黑马   /  2015-11-10 16:20  /  603 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

复制多级文件夹的文件  包括文件夹  求大神?

4 个回复

倒序浏览
看来IO操作真的很重要
回复 使用道具 举报
我的思路是:
定义一个方法 :先遍历一个文件夹   遍历过程中判断是否是文件夹,是 就调用自己,如果不是文件夹,就读取流读取 输出至指定的文件中,
回复 使用道具 举报
还没学到这个,坐等大神出现
回复 使用道具 举报
/**
* 拷贝带内容的文件夹
*
*        File.mkdir();
*
*        分析:
*        1把一个文件夹,拷贝到另外一个文件夹里
*          src,源文件夹 ,  dest 目标文件夹   ,dest应该是 src的父级目录
*        2.创建文件夹 ,再拷贝文件
*         File(parent , zi)
*         File src_copy =  new File(D:\\ ,  src.getName());
*
*        3.读文件   src 下的文件
*             写文件   file( src_copy , 文件名字);
*       
*        4. 文件夹 ,调用自己   
*          (file , src_copy)
*
*/
public class CopyDirTest {
        public static void main(String[] args) throws IOException {
                Scanner sc = new Scanner(System.in);
                //声明源文件路径和目标文件路径
                System.out.println("输入源文件路径");
                File src = new File(sc.nextLine());
                System.out.println("输入目标文件路径");
                File parent = new File(sc.nextLine());
               
                //调用copy方法
                dirCopy(src,parent);
               
        }

        private static void dirCopy(File src, File parent) throws IOException {
                //先进行一下源文件夹和目标文件夹路径是否相同
                if(src.equals(parent)){
                        System.out.println("这样windows删不掉,就不让你玩了");
                        return;
                               
                }
                //创建文件夹
                File src_copy = new File(parent,src.getName());
                src_copy.mkdir();
                //获取源文件夹所有文件
                File[] files = src.listFiles();
                for (File file : files) {
                        if (file.isFile()) { // file :
                                // C:\Users\ThinkPad\Desktop\中午共享\西游记\3.jpg
                                // 拷贝文件
                                BufferedInputStream bis = new BufferedInputStream(
                                                new FileInputStream(file));
                                BufferedOutputStream bos = new BufferedOutputStream(
                                                new FileOutputStream(new File(src_copy, file.getName()))); // d:\\西游记\\3.jpg

                                int b;
                                while ((b = bis.read()) != -1) {
                                        bos.write(b);
                                }

                                bis.close();
                                bos.close();
                        }else {
                        // 4 -- 调用自己
                        // 源 : file
                        // 目标:
                        dirCopy(file, src_copy);
                        }
                }       
               
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马