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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 繁复 中级黑马   /  2015-6-3 23:00  /  655 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

   学习了java的io流,发现复制文件夹没有什么太好的手段,无非就是递归的方法依次判断,然后再创建到新的文件夹,不知道有没有大神有更好的办法?下面粘一段自己写的复制文件夹的代码:   public static void main(String[] args) throws IOException {
                //创建新的文件夹
                File fl1 = new File("D:\\新的学习包");
                fl1.mkdir();
                //传递参数  老的文件夹名和新的文件夹名
                copyfile("D:\\学习包", fl1.getPath());
        }

        public static void copyfile(String oldpath, String newpath)
                        throws IOException {
                File fl = new File(oldpath);
                //循环判断是否是文件,通过字节流复制
                File[] files = fl.listFiles();
                for (File item : files) {
                        if (item.isDirectory()) {
                                File newfile = new File(newpath + "\\" + item.getName());
                                newfile.mkdir();
                                copyfile(item.getPath(), newfile.getPath());
                        } else {
                                InputStream input = new FileInputStream(item.getPath());
                                DataInputStream dis = new DataInputStream(input);
                                OutputStream output = new FileOutputStream(newpath + "\\"
                                                + item.getName());
                                DataOutputStream dos = new DataOutputStream(output);
                                int num = 0;
                                while ((num = dis.read()) != -1) {
                                        dos.write(num);
                                }
                                dis.close();
                                dos.close();

                        }
                }
        }

5 个回复

正序浏览
学习啦···
回复 使用道具 举报
好、、、、、、、、、、
回复 使用道具 举报
我觉得把原文件夹和目标文件夹放在main方法中,直接copyDir(src,des)简单明了些
回复 使用道具 举报

多写几遍就懂了
回复 使用道具 举报
学习,看不懂
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马