package com.snowcattle.game.common.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.URL; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; /** * * */ public class FileUtil { /** * 创建一个目录 * * @param dir * @exception RuntimeException * ,创建目录失败会抛出此异常 */ public static void createDir(File dir) { if (!dir.exists() && !dir.mkdirs()) { throw new RuntimeException("Can't create the dir [" + dir + "]"); } } /** * 删除一个文件或者目录 * * @param file */ public static void delete(File file) { if (file.isFile()) { file.delete(); } else if (file.isDirectory()) { File[] _files = file.listFiles(); for (File _f : _files) { delete(_f); } file.delete(); } } /** * 删除一个目录下的除exculde指定的后缀名外的所有子文件或子目录 * * @param file */ public static void cleanFolder(File file,String exculde) { if(!file.isDirectory()) return; File[] _files = file.listFiles(); for (File _f : _files) { if(_f.getName().endsWith(exculde)) continue; delete(_f); } } /** * 压缩zip文件 * @param file * @param dest * @throws IOException */ public static void zip(File file, File dest) throws IOException { ZipOutputStream _zip1 = new ZipOutputStream(new FileOutputStream(dest)); zipFiles(file, _zip1, file.getAbsolutePath()); _zip1.close(); } private static void zipFiles(File file, ZipOutputStream out, String root) throws IOException { String _entryName = file.getAbsolutePath(); if (_entryName.equals(root)) { // _entryName=""; } else { int _ri = _entryName.indexOf(root); _entryName = _entryName.substring(_ri + root.length()+1); _entryName = _entryName.replace('\\', '/'); } if (file.isFile()) { out.putNextEntry(new ZipEntry(_entryName)); FileInputStream _fin = new FileInputStream(file); byte[] _b = new byte[1024]; int len = 0; while ((len = _fin.read(_b)) != -1) { out.write(_b, 0, len); } _fin.close(); } else { out.putNextEntry(new ZipEntry(_entryName + "/")); File[] _files = file.listFiles(); for (File _f : _files) { zipFiles(_f, out, root); } } } public static URL getConfigURL(String fileName) { ClassLoader classLoader = Thread.currentThread() .getContextClassLoader(); return classLoader.getResource(fileName); } public static String getConfigPath(String fileName) { ClassLoader classLoader = Thread.currentThread() .getContextClassLoader(); return classLoader.getResource(fileName).getPath(); } public static File getFile(String filePath) { URL url= getConfigURL(filePath); if(url != null){ return new File(url.getFile()); } return null; } }