2016-04-22 54 views
0

我想解壓縮一個壓縮文件夾,並將解壓縮後的所有壓縮文件夾內的文本文件放在同一個驅動器中。這是代碼。如何在java中使用JFileChooser選擇一個zip文件

import java.util.*; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.FileInputStream; 
import java.io.InputStream; 
import java.io.IOException; 
import java.util.zip.ZipEntry; 
import java.util.zip.ZipOutputStream; 
import java.util.Enumeration; 
import java.util.zip.ZipFile; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

class Unzip implements ActionListener 
{ 
    // JFrame f; 
    JFileChooser c; 
    String folderName;File f;char first; 

    Unzip() 
    { 
     c=new JFileChooser(); 
     c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
     c.setDialogTitle("choose file"); 

     int x=c.showOpenDialog(null); 
     if(x==JFileChooser.APPROVE_OPTION) 
     { 
      f=c.getSelectedFile(); 
      first=f.toString().charAt(0); 
      folderName=f.getName(); 
      System.out.println(f.getName()); 
     } 
    } 
    public void actionPerformed(ActionEvent ae) 
    { 

     try{ 
      ZipFile zfile=new ZipFile(f); 

      Enumeration enm=zfile.entries(); 
      while(enm.hasMoreElements()) 
      { 
       ZipEntry entry=(ZipEntry)enm.nextElement(); 
       String name=entry.getName(); 
       System.out.println("name "+name); 
       File file=new File(first+":\\"+name); 
       InputStream is=zfile.getInputStream(entry); 
       FileOutputStream fos=new FileOutputStream(file); 
       int length=0; 
       while((length=is.read())!=-1) 
       { 
        fos.write(length); 
       } 
       is.close(); 
       fos.close(); 
      } 
      zfile.close(); 
      }catch(IOException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
    public static void main(String s[]) 
    { 
     new Unzip(); 
    } 
} 

但問題是,壓縮foler這是目前在G:\驅動器是不可見的,當我嘗試導航使用JFileChooser的文件夾。

我該怎麼做才能讓我選擇壓縮的文件夾來解壓縮。

+0

我想你應該在你設置JFileChooser的地方顯示你的代碼。我不認爲讀取您的zip文件的代碼與您的問題有任何關係,因爲只有在您選擇了一個文件後纔會運行 – Bartvbl

+0

我已經上傳了完整的代碼。 – a874

回答

1

你的問題是在這條線:

c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 

JFileChooser中只會讓你選擇目錄,這就是爲什麼你的zip文件沒有顯示出來。

只要刪除這一行,你的代碼應該工作。

相關問題