黑马程序员技术交流社区

标题: java的面试题 [打印本页]

作者: 刘佳禹    时间: 2015-11-10 16:20
标题: java的面试题
复制多级文件夹的文件  包括文件夹  求大神?

作者: 雨来    时间: 2015-11-10 21:02
看来IO操作真的很重要
作者: 478883662    时间: 2015-11-10 23:26
我的思路是:
定义一个方法 :先遍历一个文件夹   遍历过程中判断是否是文件夹,是 就调用自己,如果不是文件夹,就读取流读取 输出至指定的文件中,
作者: chenhaiqian    时间: 2015-11-11 00:14
还没学到这个,坐等大神出现
作者: 零尘    时间: 2015-11-11 00:14
/**
* 拷贝带内容的文件夹
*
*        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);
                        }
                }       
               
        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2