原创 

java 解压rar文件,子级目录文件拷贝到父级

分类:java    500人阅读    IT小君  2021-04-21 22:52
package com.tool;


import com.github.junrar.Junrar;
import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Collection;

public class RarTool {

    public static void main(String[] args) throws Exception {
        String dir = "E:\\procedure\\python\\shopSpider\\upload";

        Collection<File> listFiles2 = FileUtils.listFiles(new File(dir), new String[]{"rar"}, false);
        listFiles2.forEach(item -> {
            String path = item.getAbsolutePath();
            String name = item.getName();
            if(!name.startsWith("moban"))return;
            String newPath = item.getParent() + "//" + name.replace(".rar", "");
            File newDir = new File(newPath);
            try {
                FileUtils.deleteDirectory(newDir);
                FileUtils.forceMkdir(newDir);
                Junrar.extract(path, newPath);
                File innerFile = Files.list(Paths.get(newPath)).findFirst().get().toFile();
                move(newDir,innerFile);
                innerFile.renameTo(new File(newPath, innerFile.getName()));
                FileUtils.deleteDirectory(innerFile);
                FileUtils.deleteQuietly(new File(newPath+"//说明.htm"));
            } catch (Exception e) {
                System.out.println(name);
                e.printStackTrace();
            }
        });
    }

    private static void move(File toDir, File currDir) throws IOException {
        for (File file : currDir.listFiles()) {
            if (file.isDirectory()) {
                File newDir = new File(toDir.getAbsolutePath()+"//"+file.getName());
                if(!newDir.exists())
                    FileUtils.forceMkdir(newDir);
                move(newDir, file);
            } else {
                file.renameTo(new File(toDir, file.getName()));
            }
        }
    }
}


支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

 工具推荐 更多»