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

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

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

最佳答案

您的问题在这一行:

c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

JFileChooser 只会让您选择目录,这就是您的 zip 文件不显示的原因。

只需删除此行,您的代码就可以工作。

关于java - 如何在java中使用JFileChooser选择zip文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36794714/

相关文章:

Java 模式对话框不会阻止代码执行

java - 为什么我的文件类型无法正确显示?

java - JFileChooser 从 JSP 浏览对话框

java - 使用父类(super class)引用时方法重载不起作用

java - 将 Java 线程映射到 native pthread

java - 在hadoop中序列化数组

java - 建模继承层次结构... java

java - 调用返回 null 的 getGraphics() 的任何替代方法

Java:JOptionPane 输入

java - JTabbedPane 内 JFileChooser 上的 ActionListener