java 如何使用 JFileChooser 选择 zip 文件

How to choose a zip file using JFileChooser in java

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

    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:\ 驱动器中的压缩文件夹不可见。

我应该怎么做才能选择要解压缩的压缩文件夹。

您的问题在这一行:

c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

JFileChooser 将只允许您 select 个目录,这就是您的 zip 文件不显示的原因。

只需删除这一行,您的代码就可以正常工作。