我在该文件下面有一个类UnZip,因为它解压缩后,未压缩文件的名称输出到变量destinationPath中。

public class UnZip {

public void unzip(String filename) throws IOException {

...
...

    try {

        ...
        ...

            }
            else {

                System.out.println("Extracting file: " + destinationPath);


                BufferedInputStream bis = new BufferedInputStream(zipFile.getInputStream(entry));

                int b;
                byte buffer[] = new byte[1024];

                ...
                ...

                bos.close();
                bis.close();

            }

        }

    }
    catch (IOException ioe) {
        System.out.println("Error opening zip file" + ioe);
    }
     finally {
         try {
             if (zipFile!=null) {
                 zipFile.close();
             }
         }
         catch (IOException ioe) {
                System.out.println("Error while closing zip file" + ioe);
         }
     }
}


这是我的主类,我创建了一个名为unzipper的UnZip对象,开始对文件zipFilePath进行压缩。这是我的问题,当我创建解压缩对象并执行该类的过程时,我想输出每个要解压缩的文件的名称,如UnZip类中的destinationPath变量所表示的。我可以使用任何设计模式来实现此目的吗?

public class Window extends JFrame {

...
...

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Window frame = new Window();
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public Window() {


                UnZip unzipper = new UnZip();
                try {
                    unzipper.unzip(zipFilePath);
                    //I wants to print the file name here
                } catch (Exception ex) {
                    // some errors occurred
                    ex.printStackTrace();
                }

            }
        }
}

最佳答案

您可以使用Observer Pattern。这将允许您将interface附加到UnZip类,该类将调用向相关方提供信息的一个或方法。

这些在Swing中通常称为“侦听器”

09-28 06:06