巴拉巴拉
小魔仙

资源整理

资源太乱,需要按照类型整理一下

我这里是遇到了cocos creator 2.x版本的资源动态加载抓包,是md5处理过, 并且都放在不同的md5目录下,所以需要稍微的整理一下方便查找

这段代码将某个目录下所有文件读取出来后,根据文件后缀分别整理好

package com.againfly.demo


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by Jecced on 2018/11/27.
 * 文件分类,根据后缀分类
 */
public class FileGroupByType {
    public static void main(String args[]) throws Exception{

        /* 输入文件夹 */
        String inputDir = "/Users/jecced/input_path/res/";

        /* 输出文件夹 */
        String outDir = "/Users/jecced/output_path/";

        File inputDirFile = new File(inputDir);

        List<File> files = listAllFile(inputDirFile);

        /* 没有后缀的文件放在undefined的文件夹中 */
        for(File file : files){
            /* 跳过文件夹, 不存在的文件, 不是文件的文件, 隐藏的文件, 文件名为.开头的文件 */
            if(null == file) continue;
            if(file.isDirectory()) continue;
            if(!file.exists())continue;
            if(!file.isFile()) continue;
            if(file.isHidden()) continue;
            String name = file.getName();
            if(name.startsWith("."))continue;

            /* 截取文件后缀 */
            String suffix = "undefined";
            int index = name.lastIndexOf(".");
            if(-1 != index) suffix = name.substring(index);
            if(name.length() == 1) suffix = "undefined";
            suffix = suffix.replaceAll("\\.", "");

            /* 准备生成的新文件位置和目录 */
            File outDirFile = new File(outDir+ File.separator + suffix);
            if(!outDirFile.exists()) outDirFile.mkdirs();
            File newFile = new File(outDir + File.separator + suffix + File.separator + file.getName());

            /* 复制文件到新的位置 */
            fileCopy(file, newFile);
        }


    }

    /**
     * 列出目录下所有文件, 递归, 请注意层级不要过深
     */
    private static List<File> listAllFile(File dir) {
        List<File> list = new ArrayList<>();
        if(null == dir) return list;
        if(dir.isFile()){
            return list;
        }
        for(File child : dir.listFiles()){
            if(child.isFile()) list.add(child);
            else list.addAll(listAllFile(child));
        }
        return list;
    }

    /**
     * 文件拷贝
     */
    private static void fileCopy(File oldFile, File newFile) {
        try{
            FileInputStream input = new FileInputStream(oldFile);
            FileOutputStream output = new FileOutputStream(newFile);
            byte[] buffer = new byte[1024 * 10];
            int len = -1;
            while (-1 != ( len = input.read(buffer))){
                output.write(buffer, 0, len);
            }
            input.close();
            output.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }

}

赞(0) 打赏
如果文章对你有帮助,欢迎你来评价反馈。AgainFly » 资源整理

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  • Q Q(选填)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏