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, 有什麼疑問,我們可以相互交流