欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實(shí)現(xiàn)多個(gè)文件壓縮成壓縮包

 更新時(shí)間:2018年07月25日 11:04:46   作者:NFA_YY  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)多個(gè)文件壓縮成壓縮包,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java實(shí)現(xiàn)多個(gè)文件壓縮的具體代碼,供大家參考,具體內(nèi)容如下

需要用到的ant.jar

package util;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;


public class ZipTools { 

  public static final String ZIP_FILENAME = ""; //需要解壓縮的文件名 
  public static final String ZIP_DIR = "";  //需要壓縮的文件夾 
  public static final String UN_ZIP_DIR = "";  //要解壓的文件目錄 
  public static final int BUFFER = 1024 ;  //緩存大小 

public static void zipFile(String baseDir,String fileName) throws Exception{ 
    List fileList=getSubFiles(new File(baseDir)); 
    ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(fileName)); 
    ZipEntry ze=null; 
    byte[] buf=new byte[BUFFER]; 
    int readLen=0; 
    for(int i = 0; i <fileList.size(); i++) { 
      File f=(File)fileList.get(i); 
      ze=new ZipEntry(getAbsFileName(baseDir, f)); 
      ze.setSize(f.length()); 
      ze.setTime(f.lastModified());   
      zos.putNextEntry(ze); 
      InputStream is=new BufferedInputStream(new FileInputStream(f)); 
      while ((readLen=is.read(buf, 0, BUFFER))!=-1) { 
        zos.write(buf, 0, readLen); 
      } 
      is.close(); 
    } 
    zos.close(); 
  } 


private static String getAbsFileName(String baseDir, File realFileName){ 
    File real=realFileName; 
    File base=new File(baseDir); 
    String ret=real.getName(); 
    while (true) { 
      real=real.getParentFile(); 
      if(real==null)  
        break; 
      if(real.equals(base))  
        break; 
      else 
        ret=real.getName()+"/"+ret; 
    } 
    return ret; 
  } 

private static List getSubFiles(File baseDir){ 
    List ret=new ArrayList(); 
    File[] tmp=baseDir.listFiles(); 
    for (int i = 0; i <tmp.length; i++) { 
      if(tmp[i].isFile()) 
        ret.add(tmp[i]); 
      if(tmp[i].isDirectory()) 
        ret.addAll(getSubFiles(tmp[i])); 
    } 
    return ret; 
  } 

public static void upZipFile() throws Exception{ 
    ZipFile zfile=new ZipFile(ZIP_FILENAME); 
    Enumeration zList=zfile.entries(); 
    ZipEntry ze=null; 
    byte[] buf=new byte[1024]; 
    while(zList.hasMoreElements()){ 
      ze=(ZipEntry)zList.nextElement();     
      if(ze.isDirectory()){ 
        File f=new File(ZIP_DIR+ze.getName()); 
        f.mkdir(); 
        continue; 
      } 
      OutputStream os=new BufferedOutputStream(new FileOutputStream(getRealFileName(ZIP_DIR, ze.getName()))); 
      InputStream is=new BufferedInputStream(zfile.getInputStream(ze)); 
      int readLen=0; 
      while ((readLen=is.read(buf, 0, 1024))!=-1) { 
        os.write(buf, 0, readLen); 
      } 
      is.close(); 
      os.close();  
    } 
    zfile.close(); 
  } 

public static File getRealFileName(String baseDir, String absFileName){ 
    String[] dirs=absFileName.split("/"); 
    File ret=new File(baseDir); 
    if(dirs.length>1){ 
      for (int i = 0; i < dirs.length-1;i++) { 
        ret=new File(ret, dirs[i]); 
      } 
      if(!ret.exists()) 
        ret.mkdirs(); 
      ret=new File(ret, dirs[dirs.length-1]); 
      return ret; 
    } 
    return ret; 
  } 

public static void deleteDirFile(String path){
   File file=new File(path);
   if(file.isDirectory()){    //如果是目錄,先遞歸刪除
     String[] list=file.list();
     for(int i=0;i<list.length;i++){
     deleteDirFile(path+"\\"+list[i]); //先刪除目錄下的文件
     }
   }    
   file.delete();
 }


public static String newFolder(String dir){
 java.io.File myFilePath=new java.io.File(dir);
 if(myFilePath.isDirectory()){}else{
  myFilePath.mkdirs();
 }
 return dir;
 }

public static String getFileNames(String path){  

    File file = new File(path);      // get file list where the path has
    File[] array = file.listFiles();     // 獲得文件列表 
    String pdfNames="";

    for(int i=0;i<array.length;i++){  
      if(array[i].isFile()){  
        if(array[i].getName().endsWith(".pdf")){  //獲得pdf文件名稱
         pdfNames+=array[i].getName().substring(0,array[i].getName().length()-4)+",";
        }
      } 
    }
    if(pdfNames.length()>0){
     pdfNames.substring(0,pdfNames.length()-1);
    }
    return pdfNames;
  }

public static void copyFile(String oldPath, String newPath) {
    try {
      int bytesum = 0;
      int byteread = 0;
      File oldfile = new File(oldPath);
      if (oldfile.exists()) {     //文件存在時(shí)
        InputStream inStream = new FileInputStream(oldPath); //讀入原文件
        FileOutputStream fs = new FileOutputStream(newPath);
        byte[] buffer = new byte[1444];
        while ( (byteread = inStream.read(buffer)) != -1) {
          bytesum += byteread;    //字節(jié)數(shù)文件大小
          fs.write(buffer, 0, byteread);
        }
        inStream.close();
      }
    }
    catch (Exception e) {
      System.out.println("copy file error!");
      e.printStackTrace();
    }
  }

public static boolean fileExist(String fileNames,String pdfName){
 boolean flag=false;
 if(!"".equals(fileNames)){
  String[] nameArr=fileNames.split(",");
  for(int i=0;i<nameArr.length;i++){
  if(pdfName.equals(nameArr[i])){    //如果文件名相同則執(zhí)行拷貝操作(拷貝到zip目錄準(zhǔn)備打包)
   flag=true;
   break;
  }
  }
 }
 return flag;
 }

public static void deleteFileAndDir(String path){
  File file = new File(path);  
     File[] array = file.listFiles(); 
     for(int i=0;i<array.length;i++){  
       if(array[i].isFile()){
         array[i].delete();
       }else if(array[i].isDirectory()){  
       deleteDirFile(array[i].getPath()); 
       }  
     }  
 }

}

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Security使用多種加密方式進(jìn)行密碼校驗(yàn)的代碼示例

    Spring Security使用多種加密方式進(jìn)行密碼校驗(yàn)的代碼示例

    在Web應(yīng)用中,密碼的安全存儲(chǔ)和驗(yàn)證是至關(guān)重要的,本文將通過一個(gè)具體的代碼示例,介紹和總結(jié)如何在Spring Security中使用多種加密方式進(jìn)行密碼校驗(yàn),文中通過代碼講解得非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • java?Date和SimpleDateFormat時(shí)間類詳解

    java?Date和SimpleDateFormat時(shí)間類詳解

    這篇文章主要介紹了java?Date和SimpleDateFormat時(shí)間類詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • java 中匿名內(nèi)部類的實(shí)例詳解

    java 中匿名內(nèi)部類的實(shí)例詳解

    這篇文章主要介紹了java 中匿名內(nèi)部類的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例來幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • 使用SpringBoot請(qǐng)求參數(shù)過濾空格

    使用SpringBoot請(qǐng)求參數(shù)過濾空格

    這篇文章主要介紹了使用SpringBoot請(qǐng)求參數(shù)過濾空格的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • servlet實(shí)現(xiàn)文件上傳、預(yù)覽、下載、刪除功能

    servlet實(shí)現(xiàn)文件上傳、預(yù)覽、下載、刪除功能

    這篇文章主要為大家詳細(xì)介紹了servlet實(shí)現(xiàn)文件上傳、預(yù)覽、下載、刪除功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • java利用socket通信實(shí)現(xiàn)Modbus-RTU通信協(xié)議的示例代碼

    java利用socket通信實(shí)現(xiàn)Modbus-RTU通信協(xié)議的示例代碼

    這篇文章主要介紹了java利用socket通信實(shí)現(xiàn)Modbus-RTU通信協(xié)議的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • springboot下添加日志模塊和設(shè)置日志文件輸出的方法

    springboot下添加日志模塊和設(shè)置日志文件輸出的方法

    日志的使用將通過SLF4J來使用,SLF4J是一個(gè)為Java應(yīng)用提供簡單日志記錄的接口,在Spring框架中,SLF4J常常用于處理框架本身以及應(yīng)用程序的日志記錄,本文給大家介紹springboot下添加日志模塊和設(shè)置日志文件輸出的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2023-12-12
  • 通過Class類獲取對(duì)象(實(shí)例講解)

    通過Class類獲取對(duì)象(實(shí)例講解)

    下面小編就為大家?guī)硪黄ㄟ^Class類獲取對(duì)象(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • Idea設(shè)置spring boot應(yīng)用配置參數(shù)的兩種方式

    Idea設(shè)置spring boot應(yīng)用配置參數(shù)的兩種方式

    本文通過兩個(gè)方式介紹Idea設(shè)置spring boot應(yīng)用配置參數(shù),一種是配置VM options的參數(shù)時(shí)要以:-DparamName的格式設(shè)置參數(shù),第二種可以參考下本文詳細(xì)設(shè)置,感興趣的朋友跟隨小編一起看看吧
    2023-11-11
  • 淺析SpringBoot統(tǒng)一返回結(jié)果的實(shí)現(xiàn)

    淺析SpringBoot統(tǒng)一返回結(jié)果的實(shí)現(xiàn)

    前后端開發(fā)過程中數(shù)據(jù)交互規(guī)范化是一件非常重要的事情,不僅可以減少前后端交互過程中出現(xiàn)的問題,也讓代碼邏輯更加具有條理,下面小編就和大家講講SpringBoot如何統(tǒng)一返回結(jié)果的吧
    2023-07-07

最新評(píng)論