中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java怎么壓縮文件和文件夾

發布時間:2021-08-26 14:47:47 來源:億速云 閱讀:208 作者:chen 欄目:開發技術

這篇文章主要講解了“Java怎么壓縮文件和文件夾”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java怎么壓縮文件和文件夾”吧!

本次主要是實現了功能:根據傳入的路徑,壓縮文件和文件夾,例如從A路徑下的文件壓縮到B目錄,其中包括空文件夾。廢話不多說,直接上代碼:(這是一個工具類,idea親測可用!!)

                        import java.util.zip.ZipFile;
                        import  org.apache.tools.zip.*;
                        import java.io.*;

                    /*********  1.壓縮文件和文件夾   *******/   
       public  static void zipFile(ZipOutputStream zipOutputStream, File file, String parentFileName) {
       FileInputStream in = null;
        try {
        org.apache.tools.zip.ZipEntry zipEntry = new org.apache.tools.zip.ZipEntry(parentFileName);
        //  ZipEntry zipEntry = new ZipEntry(file.getName());
        zipEntry.setTime(file.lastModified());
        zipOutputStream.putNextEntry(zipEntry);
        in = new FileInputStream(file);
        int len;
        byte[] buf = new byte[8 * 1024];
        while ((len = in.read(buf)) != -1) {
            zipOutputStream.write(buf, 0, len);
        }
        zipOutputStream.closeEntry();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }catch (Exception e){
        e.printStackTrace();
    }finally {
        try {
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

    /**
 * 2.遞歸壓縮目錄結構
 *
 * @param zipOutputStream
 * @param file
 * @param parentFileName
 */
public  static void directory(org.apache.tools.zip.ZipOutputStream zipOutputStream, File file, String parentFileName) {
    File[] files = file.listFiles();
    String parentFileNameTemp = null;
    for (File fileTemp : files) {
        String   fileTempName = fileTemp.getName().substring(fileTemp.getName().indexOf(".") + 1);
        if(fileTempName.equals("zip")){
            fileTemp.delete();
            continue;
        }
        parentFileNameTemp = com.dy.core.sims.utils.StringUtils.isEmpty(parentFileName) ? fileTemp.getName() : parentFileName + "/" + fileTemp.getName();
        if (fileTemp.isDirectory()) {
            directory(zipOutputStream, fileTemp, parentFileNameTemp);
        }else {
            zipFile(zipOutputStream, fileTemp, parentFileNameTemp);
        }
    }

    if(files.length==0){
        try{
            zipOutputStream.putNextEntry(new ZipEntry (getPath(file)+File.separator));
        }catch (Exception e){
            e.printStackTrace();
            }

             }
          }

           //3.獲得該文件在壓縮包中的相對路徑
      public  static  String getPath (File f) {
    String str1 = f.getAbsolutePath();
    int n1= str1.length();
    String str2 = f.getAbsolutePath();
    int n2= str2.length();
    String str3 = f.getName();
    int n3= str3.length();
    String str = str2.substring(n1-n3, n2);
    return str;
       }

                 /**
 * 4.壓縮文件目錄
 *
 * @param source 源文件目錄(單個文件和多層目錄)
 * @param destit 目標目錄
 */
public static Boolean  compressFiles(String source, String destit) {
    //判斷路徑是否存在
    String   de=destit.substring(0, destit.lastIndexOf("//")+2);
    File  targetFile=new File(source);
    File  fileTarget=new File(de);
    if(!targetFile.exists() || !fileTarget.exists()){
        return false;
    }
    File file = new File(source);
    org.apache.tools.zip.ZipOutputStream zipOutputStream = null;
    FileOutputStream fileOutputStream = null;
    try {
        fileOutputStream = new FileOutputStream(destit);
        zipOutputStream = new ZipOutputStream(fileOutputStream);
        if (file.isDirectory()) {
            directory(zipOutputStream, file, "");
        } else {
            zipFile(zipOutputStream, file, "");
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            zipOutputStream.close();
            fileOutputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return  true;
      }

                /**
 * 測試
 *
 * @param args
 */
public static void main(String[] args) {

    try{

       Boolean  flag=compressFiles("D://Excel//","D://Excel//aa.zip");
        System.out.println(flag);
    }catch (Exception e){
        e.printStackTrace();
         }
    }

感謝各位的閱讀,以上就是“Java怎么壓縮文件和文件夾”的內容了,經過本文的學習后,相信大家對Java怎么壓縮文件和文件夾這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新沂市| 金塔县| 盐山县| 怀远县| 象山县| 诏安县| 萍乡市| 张家口市| 溧水县| 务川| 虎林市| 民和| 和田市| 龙海市| 麟游县| 彰武县| 务川| 东城区| 九江市| 阳西县| 历史| 肇源县| 鸡东县| 沁水县| 鹿泉市| 水城县| 临沂市| 通城县| 普宁市| 郓城县| 双辽市| 阿图什市| 积石山| 海宁市| 昌平区| 东光县| 白水县| 来凤县| 北票市| 云安县| 五台县|