美文网首页
复制文件

复制文件

作者: 海人为记 | 来源:发表于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