| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
ye34
10年前发布

java操作文件类 (文件解压缩 文件增删改查)

import java.io.File;     import java.io.FileInputStream;     import java.io.FileOutputStream;     import java.io.IOException;     import java.io.InputStream;     import java.util.Enumeration;     import org.apache.tools.zip.ZipEntry;     import org.apache.tools.zip.ZipFile;     import org.apache.tools.zip.ZipOutputStream;     import org.slf4j.Logger;     import org.slf4j.LoggerFactory;     /**   * 压缩,解压,删除,拷贝操作。      * 注意:此类中用到的压缩类ZipEntry等都来自于org.apache.tools包而非java.util。此包在ant.jar中有。   *   * * @author Tony   */     public class FileUtil {         protected static Logger log = LoggerFactory.getLogger(FileUtil.class);         /**       *       * 压缩文件       *       * @param inputFileName       *            要压缩的文件或文件夹路径,例如:c:\\a.txt,c:\\a\       *       * @param outputFileName       *            输出zip文件的路径,例如:c:\\a.zip       *       */         public static void zip(String inputFileName, String outputFileName)      throws Exception {             ZipOutputStream out = new ZipOutputStream(new FileOutputStream(                      outputFileName));             zip(out, new File(inputFileName), "");             log.debug("压缩完成!");             out.closeEntry();             out.close();         }         /**       *       * 压缩文件       *       * @param out       *            org.apache.tools.zip.ZipOutputStream       *       * @param file       *            待压缩的文件       *       * @param base       *            压缩的根目录       *       */         private static void zip(ZipOutputStream out, File file, String base)      throws Exception {             if (file.isDirectory()) {                 File[] fl = file.listFiles();                 base = base.length() == 0 ? "" : base + File.separator;                 for (int i = 0; i < fl.length; i++) {                     zip(out, fl[i], base + fl[i].getName());                 }             } else {                 out.putNextEntry(new ZipEntry(base));                 log.debug("添加压缩文件:" + base);                 FileInputStream in = new FileInputStream(file);                 int b;                 while ((b = in.read()) != -1) {                     out.write(b);                 }                 in.close();             }         }         /**       *       * 解压zip文件       *       * @param zipFileName       *            待解压的zip文件路径,例如:c:\\a.zip       *       * @param outputDirectory       *            解压目标文件夹,例如:c:\\a\       *       */         public static void unZip(String zipFileName, String outputDirectory)      throws Exception {             ZipFile zipFile = new ZipFile(zipFileName);             try {                 Enumeration<?> e = zipFile.getEntries();                 ZipEntry zipEntry = null;                 createDirectory(outputDirectory, "");                 while (e.hasMoreElements()) {                     zipEntry = (ZipEntry) e.nextElement();                     log.debug("解压:" + zipEntry.getName());                     if (zipEntry.isDirectory()) {                         String name = zipEntry.getName();                         name = name.substring(0, name.length() - 1);                         File f = new File(outputDirectory + File.separator + name);                         f.mkdir();                         log                      .debug("创建目录:" + outputDirectory + File.separator                             + name);                     } else {                         String fileName = zipEntry.getName();                         fileName = fileName.replace('\\', '/');                         if (fileName.indexOf("/") != -1) {                             createDirectory(outputDirectory, fileName.substring(0,                                          fileName.lastIndexOf("/")));                             fileName = fileName.substring(                                         fileName.lastIndexOf("/") + 1, fileName                                         .length());                         }                         File f = new File(outputDirectory + File.separator                                        + zipEntry.getName());                         f.createNewFile();                         InputStream in = zipFile.getInputStream(zipEntry);                         FileOutputStream out = new FileOutputStream(f);                         byte[] by = new byte[1024];                         int c;                         while ((c = in.read(by)) != -1) {                             out.write(by, 0, c);                         }                         in.close();                         out.close();                     }                 }             } catch (Exception ex) {                 System.out.println(ex.getMessage());             } finally {                 zipFile.close();                 log.debug("解压完成!");             }         }      /**       * 功能描述:列出某文件夹及其子文件夹下面的文件,并可根据扩展名过滤       *       * @param path       *            文件       */      public static void list(File path) {          if (!path.exists()) {              System.out.println("文件名称不存?");          } else {              if (path.isFile()) {                  if (path.getName().toLowerCase().endsWith(".pdf")                          || path.getName().toLowerCase().endsWith(".doc")                          || path.getName().toLowerCase().endsWith(".chm")                          || path.getName().toLowerCase().endsWith(".html")                          || path.getName().toLowerCase().endsWith(".htm")) {// 文件格式                      System.out.println(path);                      System.out.println(path.getName());                  }              } else {                  File[] files = path.listFiles();                  for (int i = 0; i < files.length; i++) {                      list(files[i]);                  }              }          }      }      /**       *       * @param directory       * @param subDirectory       */      private static void createDirectory(String directory, String subDirectory) {             String dir[];             File fl = new File(directory);             try {                 if (subDirectory == "" && fl.exists() != true) {                     fl.mkdir();                 } else if (subDirectory != "") {                     dir = subDirectory.replace('\\', '/').split("/");                     for (int i = 0; i < dir.length; i++) {                         File subFile = new File(directory + File.separator + dir[i]);                         if (subFile.exists() == false)                             subFile.mkdir();                         directory += File.separator + dir[i];                     }                 }             } catch (Exception ex) {                 System.out.println(ex.getMessage());             }         }         /**       *       * 拷贝文件夹中的所有文件到另外一个文件夹       *       * @param srcDirector       *            源文件夹       *       * @param desDirector       *            目标文件夹       *       */         public static void copyFileWithDirector(String srcDirector,                                              String desDirector) throws IOException {             (new File(desDirector)).mkdirs();             File[] file = (new File(srcDirector)).listFiles();             for (int i = 0; i < file.length; i++) {                 if (file[i].isFile()) {                     log.debug("拷贝:" + file[i].getAbsolutePath() + "-->"                            + desDirector + "/" + file[i].getName());                     FileInputStream input = new FileInputStream(file[i]);                     FileOutputStream output = new FileOutputStream(desDirector                          + "/" + file[i].getName());                     byte[] b = new byte[1024 * 5];                     int len;                     while ((len = input.read(b)) != -1) {                         output.write(b, 0, len);                     }                     output.flush();                     output.close();                     input.close();                 }                 if (file[i].isDirectory()) {                     log.debug("拷贝:" + file[i].getAbsolutePath() + "-->"                            + desDirector + "/" + file[i].getName());                     copyFileWithDirector(srcDirector + "/" + file[i].getName(),                                       desDirector + "/" + file[i].getName());                 }             }         }         /**       *       * 删除文件夹       *       * @param folderPath       *            folderPath 文件夹完整绝对路径       *       */         public static void delFolder(String folderPath) throws Exception {             // 删除完里面所有内容             delAllFile(folderPath);             String filePath = folderPath;             filePath = filePath.toString();             File myFilePath = new File(filePath);             // 删除空文件夹             myFilePath.delete();         }         /**       *       * 删除指定文件夹下所有文件       *       * @param path       *            文件夹完整绝对路径       *       */         public static boolean delAllFile(String path) throws Exception {             boolean flag = false;             File file = new File(path);             if (!file.exists()) {                 return flag;             }             if (!file.isDirectory()) {                 return flag;             }             String[] tempList = file.list();             File temp = null;             for (int i = 0; i < tempList.length; i++) {                 if (path.endsWith(File.separator)) {                     temp = new File(path + tempList[i]);                 } else {                     temp = new File(path + File.separator + tempList[i]);                 }                 if (temp.isFile()) {                     temp.delete();                 }                 if (temp.isDirectory()) {                     // 先删除文件夹里面的文件                     delAllFile(path + "/" + tempList[i]);                     // 再删除空文件夹                     delFolder(path + "/" + tempList[i]);                     flag = true;                 }             }             return flag;         }      /**       * @param args       */      public static void main(String[] args) {          // TODO Auto-generated method stub          File file = new File("H:\\");          list(file);      }  }