如何在java中使用JFileChooser选择一个zip文件

时间:2016-04-22 13:06:35

标签: java swing jfilechooser

我正在尝试解压缩一个压缩文件夹,并在解压缩后将该压缩文件夹中存在的所有文本文件放在同一个驱动器中。这是代码。

    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();
    }
}

但问题是当我尝试使用JFileChooser导航该文件夹时,G:\ drive中存在的压缩文件夹不可见。

我该怎么办才能选择拉链文件夹解压缩。

1 个答案:

答案 0 :(得分:1)

你的问题就在这一行:

c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

JFileChooser只允许您选择目录,这就是您的zip文件没有显示的原因。

只需删除此行,您的代码即可运行。