文件解压,文件/目录更名,文件/目录删除,文件/目录移动
将指定的src文件解压到dstDir目录
public static void unzip(File src, File dstDir) throws IOException { ZipFile zipFile = null; try { // 创建zip文件对象 zipFile = new ZipFile(src); // 得到zip文件条目枚举对象 Enumeration zipEnum = zipFile.getEntries(); // 定义输入输出流对象 // 定义对象 ZipEntry entry = null; // 循环读取条目 while (zipEnum.hasMoreElements()) { // 得到当前条目 entry = (ZipEntry) zipEnum.nextElement(); String entryName = new String(entry.getName()); // 用/分隔条目名称 String names[] = entryName.split("\\/"); int length = names.length; String path = dstDir.getAbsolutePath(); for (int v = 0; v < length; v++) { if (v < length - 1) { // 最后一个目录之前的目录 path += "/" + names[v] + "/"; createDir(path); } else { // 最后一个 if (entryName.endsWith("/")) // 为目录,则创建文件夹 createDir(dstDir.getAbsolutePath() + "/" + entryName); else { InputStream input = null; OutputStream output = null; try {// 为文件,则输出到文件 input = zipFile.getInputStream(entry); output = new FileOutputStream(new File(dstDir.getAbsolutePath() + "/" + entryName)); byte[] buffer = new byte[1024 * 8]; int readLen = 0; while ((readLen = input.read(buffer, 0, 1024 * 8)) != -1) output.write(buffer, 0, readLen); // 关闭流 output.flush(); } finally { if (input != null) input.close(); if (output != null) output.close(); } } } } } } finally { if (zipFile != null) zipFile.close(); } }
该目录下 所有文件 集合
File[] subFiles = file.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { if (pathname.isFile()) return true; return false; } });
与文件相关的工具类库。
其内容包括文件/目录更名,文件/目录删除,文件/目录移动。
public class FileUtil { protected static Logger logger = LoggerFactory.getLogger(FileUtil.class); public static boolean copyDirectory(String oldPath, String newPath) { File b = new File(newPath); File a = new File(oldPath); try { FileUtils.copyDirectoryToDirectory(a, b); } catch (IOException e) { logger.error("", e); return false; } return true; } public static boolean moveDirectory(String oldPath, String newPath) { File b = new File(newPath); File a = new File(oldPath); return a.renameTo(b); } /** * 将文件oldFile移为newFile * * @param oldFile * @param newFile * @return */ public static boolean moveFile(String oldFile, String newFile) { File a = new File(oldFile); File b = new File(newFile); return moveFile(a, b); } /** * 将文件移至指定目录,文件名不变 * * @param file * @param path * @return */ public static boolean moveFile(File file, String path) { File tmp = new File(path); if (!tmp.exists()) tmp.mkdirs(); File b = new File(path + File.separatorChar + file.getName()); return moveFile(file, b); } /** * 将文件移至指定目录,文件名不变 * * @param file * @param path * @return 移动是否成功 */ public static boolean moveFile(File srcFile, File dstFile) { return srcFile.renameTo(dstFile); } public static boolean deleteDirectory(String sPath) { // 如果sPath不以文件分隔符结尾,自动添加文件分隔符 if (!sPath.endsWith(File.separator)) { sPath = sPath + File.separator; } File dirFile = new File(sPath); // 如果dir对应的文件不存在,或者不是一个目录,则退出 if (!dirFile.exists() || !dirFile.isDirectory()) return false; return deleteDirectory(dirFile); } public static boolean copyFile(String oldPath, String newPath) { boolean bool = false; File newFile = new File(newPath); InputStream inStream = null; OutputStream outStream = null; try { // 复制文件(保留上传的原文件,新的文件名为id_name.zip) inStream = new FileInputStream(oldPath); newFile.createNewFile(); outStream = new FileOutputStream(newPath); byte[] by = new byte[2048]; while (inStream.available() > 0) { int i = inStream.read(by); outStream.write(by, 0, i); } } catch (Exception e) { System.out.println(e.getMessage()); } finally { if (null != inStream) { try { inStream.close(); } catch (IOException e) { } } if (null != outStream) { try { outStream.flush(); } catch (IOException e) { System.err.println(e.getCause()); } try { outStream.close(); } catch (IOException e) { System.err.println(e.getCause()); } bool = true; System.out.println("复制完毕! "); } } return bool; } public static boolean deleteDirectory(File f) { boolean flag = true; // 删除文件夹下的所有文件(包括子目录) File[] files = f.listFiles(); for (int i = 0; i < files.length; i++) { // 删除子文件 if (files[i].isFile()) { flag = deleteFile(files[i].getAbsolutePath()); if (!flag) break; } // 删除子目录 else { flag = deleteDirectory(files[i].getAbsolutePath()); if (!flag) break; } } if (!flag) return false; // 删除当前目录 if (f.delete()) { return true; } else { return false; } } public static boolean deleteFile(String sPath) { File file = new File(sPath); if (file.isFile() && file.exists()) { return file.delete(); } return false; } public static String getTomcatRootPath(HttpServletRequest req) { String s = req.getSession().getServletContext().getRealPath("/"); s = new File(s).getParent() + File.separatorChar + "ROOT"; return s; } /** * 装输入流写入文件中 * * @param is * @param f * @return */ public static boolean writeFile(InputStream is, File f) { FileOutputStream fos = null; try { fos = new FileOutputStream(f); byte[] buf = new byte[10240]; int i; while ((i = is.read(buf)) > 0) fos.write(buf, 0, i); } catch (IOException e) { e.printStackTrace(); return false; } finally { if (is != null) try { is.close(); } catch (IOException e) { } if (fos != null) try { fos.close(); } catch (IOException e) { } } return true; } }
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!