我在该文件下面有一个类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中通常称为“侦听器”