java 壓縮檔,檔案夾,和解壓縮檔案夾

來源:互聯網
上載者:User

1:測試壓縮單個檔案。

public void ZipFile() throws IOException{

//壓縮後產生的檔案名稱
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("F:\\testzip.zip"));
//執行個體化一個zipentry 對象,壓縮,test.txt 檔案
ZipEntry  entry = new ZipEntry("test.txt");
zos.setComment("zip測試 壓縮 單個檔案");
zos.putNextEntry(entry);
InputStream is = new FileInputStream("F:\\test.txt");
int len=0;
while((len=is.read())!=-1)
zos.write(len);
is.close();
zos.close();
}


2:測試壓縮多個檔案。壓縮後,使用解壓縮軟體開啟,是壓縮的檔案夾。

public void zipMuFile() throws IOException{

                //要壓縮的檔案夾
File   inFile = new File("F:\\testDir\\");

//壓縮後產生的zip 壓縮檔
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("F:\\testdir.zip"));
zos.setComment("多檔案處理");
zipMyFile(inFile,zos,""); //函數調用,如下
zos.close();
}


public void zipMyFile(File inFile,ZipOutputStream zos,String dir) throws IOException{
if(inFile.isDirectory()){
File[] files = inFile.listFiles();
for(File file:files)
zipfilemy(file, zos, dir+"\\"+inFile.getName());
}else {
String entryName = null;
if(!"".equals(dir))
entryName=dir+"\\"+inFile.getName();
else
entryName = inFile.getName();
ZipEntry entry= new ZipEntry(entryName);
zos.putNextEntry(entry);
InputStream is = new FileInputStream(inFile);
int len=0;
while((len=is.read())!=-1)
zos.write(len);
is.close();
}
}

3:壓縮檔夾,開啟的是,檔案夾下的檔案,而不是目錄

public  void compressFileAndDir () throws IOException{

// 要壓縮的目錄,不過這個目錄下面只能有一個目錄,要是目錄下面有目錄,你可以使用遞迴的方法。
String  srcFile ="F:\\HTML5";

// 壓縮後的,壓縮檔
String  zipFile ="F:\\HTML5.zip";
//File zipFile = new File(zipFilepath);
File  file = new File(srcFile);
File[]  srcFiles = file.listFiles();
FileOutputStream fileOutputStream = new FileOutputStream(zipFile);
ZipOutputStream out = new ZipOutputStream(fileOutputStream);
for(int i=0;i<srcFiles.length;i++){
if(srcFiles[i].isDirectory()){
File[] files = srcFiles[i].listFiles();
for(int j=0;j<files.length;j++){
compreFile(files[j],srcFiles[i].getName()+"/",out);   //方法調用,如下
}
}else {
compreFile(srcFiles[i],"",out); //方法調用
}
}
out.flush();
out.close();
}



public void compreFile(File file,String dir,ZipOutputStream out){

byte []   buf = new byte[1024];
try {
// compress the files 
FileInputStream in = new FileInputStream(file);
out.putNextEntry(new ZipEntry(dir+file.getName()));
int len;
while((len=in.read(buf))>0){
out.write(buf,0,len);
}
out.closeEntry();
in.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}

}


4: 解壓縮檔案,解壓縮檔案,比較簡單。


public void Unzip() throws ZipException, IOException{
System.out.println("解壓檔案開始。。。。");
File file = new File("F:\\yingtao.zip"); //要解壓縮的,壓縮檔
ZipFile zipFile = new ZipFile(file);
ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(file));
ZipEntry zipEntry =null;

while((zipEntry=zipInputStream.getNextEntry())!=null){
String filename = zipEntry.getName();
File  temp = new File("F:\\UNZIP\\"+filename);  //解壓縮的檔案路徑
if(! temp.getParentFile().exists())
temp.getParentFile().mkdirs();
OutputStream os = new FileOutputStream(temp);
InputStream is = zipFile.getInputStream(zipEntry);
int len=0;
while((len=is.read())!=-1)
os.write(len);
os.close();
is.close();

}
zipInputStream.close();
}


這裡留下本人QQ:693614965, 有什麼疑問,我們可以相互交流


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.