- package compress.javaio;
- import java.io.*;
- import java.util.zip.*;
- public class CompressFiles{
- /**
- * @param args
- * @throws IOException
- */
- public static void main(String[] args) throws IOException {
- // TODO Auto-generated method stub
- String sourPath=File.separator+"root"+File.separator+"ziptest02";
- File file=new File(sourPath);
- ZipOutputStream zipOut=null;//此對象需在主函數中建立
- zipOut=new ZipOutputStream(new FileOutputStream(File.separator+"root"+File.separator+"ziptest02.zip"));
- String str=file.getName();
- Recurrence(file,zipOut,str);//調用遞歸函數,判斷該當前項是目錄或者文件
- zipOut.close();
- System.out.println("壓縮流已經關閉");
- }
- private static void Recurrence(File file,ZipOutputStream zipOut,String str) throws IOException{
- //TODO 判斷該項是不是文件,如果文件,直接傳給Compress()函數處理
- if(file.isDirectory()){
- File files[]=file.listFiles();
- for(int i=0;i<files.length;i++){
- Recurrence(files[i],zipOut,str);
- }
- }else{
- Compress(file,zipOut,str);
- }
- }
- private static void Compress(File file,ZipOutputStream zipOut,String str) throws IOException {
- // TODO Auto-generated method stub
- InputStream input=null;
- input=new FileInputStream(file);
- //String str1=str+File.separator+file.getName();
- System.out.println("這次處理文件爲:"+file.getPath());
- ZipEntry entry=new ZipEntry(file.getPath());
- zipOut.putNextEntry(entry);
- int temp=0;
- while((temp=input.read())!=-1){
- zipOut.write(temp);
- }
- input.close();
- }
- }