美文网首页
复制文件

复制文件

作者: 海人为记 | 来源:发表于2018-07-19 09:04 被阅读16次

    复制文件的思路:
    通过文件路径,我们使用File类对象的过滤器,可以直到那个文件是目录和文件,当路径是文件夹的时候,我们可以通过File类对象的mkdir在你的目标目录下创建目录,如果是文件,就更换为新的路径,并且文件的名字与后缀都要截取下来,使用输出流将文件写入到新的路径。

    将一个文件夹复制到另一个地方

        // 传入的target目标路径其实是你要存入文件的父文件夹的父文件夹
        public static void copyDirectory(String srcname, String target) throws IOException {
            
            // 你要复制的文件夹 文件路径
            File srcFile = new File(srcname);
            // 你要将文件夹复制到的目的地的文件路径
            File targetFile = new File(target,srcFile.getName());
            //根据路径创建文件夹
            targetFile.mkdir();
            
            // 获取文件夹下的所有文件路径
            File[] files = srcFile.listFiles(); 
            if(files != null) {
                for(File file : files) {
                    if(file.isFile()) {
                        FileInputStream fis = new FileInputStream(file);
                        //parent=targetFile, child=文件名
                        File file2 = new File(targetFile,file.getName());
                        FileOutputStream fos = new FileOutputStream(file2);
                        byte[] b = new byte[1024*8];
                        int len;
                        while((len=fis.read(b)) != -1)
                            fos.write(b, 0, len);
                        fis.close();
                        fos.close();
                    } else {
                        // 不是文件,就是文件夹
                        copyDirectory(file.getAbsolutePath(), targetFile.getAbsolutePath());
                    }
                }
            }
        }
    

    搜索文件夹,将文件夹下的所有JPG文件复制到另一个文件夹下

        public static void copyDirectory(String srcname, String target) throws IOException {
                
            // 你要复制的文件夹 文件路径
            File srcFile = new File(srcname);
            // 你要将文件夹复制到的目的地的文件路径
            File targetFile = new File(target);
            //根据路径创建文件夹
            targetFile.mkdir();
            // 获取文件夹下的所有文件路径
            File[] files = srcFile.listFiles(new FileFilter() {
                @Override
                public boolean accept(File pathname) {
                    if(pathname.isDirectory() || pathname.getName().endsWith(".JPG"))
                        return true;
                    return false;
                }
            }); 
            if(files != null) {
                for(File file : files) {
                    if(file.isFile()) {
                        FileInputStream fis = new FileInputStream(file);
                        //parent=targetFile, child=文件名
                        File file2 = new File(targetFile,file.getName());
                        FileOutputStream fos = new FileOutputStream(file2);
                        byte[] b = new byte[1024*8];
                        int len;
                        double sum = 0;
                        double total = fis.available();
                        while((len=fis.read(b)) != -1) {
                            fos.write(b, 0, len);
                            sum += len;
                            double tishi = sum/total * 100;
                            System.out.println("完成度:"+tishi+"%");
                        }
                        fis.close();
                        fos.close();
                    } else {
                        // 不是文件,就是文件夹
                        copyDirectory(file.getAbsolutePath(), target);
                    }
                }
            }
        }
    

    相关文章

      网友评论

          本文标题:复制文件

          本文链接:https://www.haomeiwen.com/subject/fdvapftx.html