资源太乱,需要按照类型整理一下
我这里是遇到了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();
}
}
}
最新评论