Java tutorial
import java.util.ArrayList; import java.util.Date; import java.util.Enumeration; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; public class ZipFileViewer extends JFrame { private JTable m_zipTable; private ZipTableModel m_zipTableModel; public ZipFileViewer(String zipFile, List zipEntries) { m_zipTableModel = new ZipTableModel(zipEntries); m_zipTable = new JTable(m_zipTableModel); JScrollPane scrollPane = new JScrollPane(m_zipTable); m_zipTable.setShowVerticalLines(true); m_zipTable.setShowHorizontalLines(false); getContentPane().add(scrollPane); setSize(800, 400); setVisible(true); } public static void main(String[] arg) throws Exception { String zipFileName = arg[0]; List zipFileList = null; ZipFile zipFile = new ZipFile(zipFileName); Enumeration zipEntries = zipFile.entries(); zipFileList = new ArrayList(); while (zipEntries.hasMoreElements()) { zipFileList.add((ZipEntry) (zipEntries.nextElement())); } ZipFileViewer zipFileViewer = new ZipFileViewer(zipFileName, zipFileList); } } class ZipTableModel extends AbstractTableModel { public static final int NAME = 0; public static final int SIZE = 1; public static final int COMP_SIZE = 2; public static final int TYPE = 3; public static final int LAST_MODI = 4; public String[] m_colNames = { "File Name", "Size", "Compressed Size", "Type", "Last Modified" }; private List m_zipEntries; public ZipTableModel(List zipEntries) { super(); m_zipEntries = zipEntries; } public int getColumnCount() { return m_colNames.length; } public int getRowCount() { return m_zipEntries.size(); } public String getColumnName(int col) { return m_colNames[col]; } public Object getValueAt(int row, int col) { ZipEntry zipEntry = (ZipEntry) (m_zipEntries.get(row)); switch (col) { case NAME: return zipEntry.getName(); case SIZE: if (zipEntry.isDirectory()) { return ""; } else { return String.valueOf(zipEntry.getSize() / 1000) + " KB"; } case COMP_SIZE: if (zipEntry.isDirectory()) { return ""; } else { return String.valueOf(zipEntry.getCompressedSize() / 1000) + " KB"; } case TYPE: if (zipEntry.isDirectory()) { return "Directory"; } else { return "File"; } case LAST_MODI: return String.valueOf(new Date(zipEntry.getTime())); } return new String(); } }