📄 myzipframe.java~1~
字号:
package myzip;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;import java.util.zip.*;import javax.swing.border.*;/** * <p>Title: zip</p> * <p>Description: zip files</p> * <p>Copyright: Copyright (c) 2005</p> * <p>Company: qlsc</p> * @author Wang Tao * @version 1.0 */public class MyZipFrame extends JFrame { JPanel contentPane; JMenuBar jMenuBar1 = new JMenuBar(); JMenu jMenuFile = new JMenu(); JMenuItem jMenuFileExit = new JMenuItem(); JMenu jMenuHelp = new JMenu(); JMenuItem jMenuHelpAbout = new JMenuItem(); BorderLayout borderLayout1 = new BorderLayout(); JMenuItem jMenuItemOpenSource = new JMenuItem(); JMenuItem jMenuItemOpenZip = new JMenuItem(); JPanel buttonPanel = new JPanel(); FlowLayout flowLayout1 = new FlowLayout(); JButton zipButton = new JButton(); JButton unzipButton = new JButton(); JPanel listPanel = new JPanel(); JPanel barPanel = new JPanel(); JButton openButton = new JButton(); TitledBorder titledBorder1; JLabel messageLabel = new JLabel(); JProgressBar ProgressBar = new JProgressBar(); ImageIcon zip=new ImageIcon("zip.jpg"), unzip=new ImageIcon("unzip.jpg"); String currentDirectory; //Construct the frame public MyZipFrame() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); titledBorder1 = new TitledBorder(""); contentPane.setLayout(borderLayout1); this.setSize(new Dimension(400, 300)); this.setTitle("Java Zip"); jMenuFile.setText("File"); jMenuFileExit.setText("Exit"); jMenuFileExit.addActionListener(new MyZipFrame_jMenuFileExit_ActionAdapter(this)); jMenuHelp.setText("Help"); jMenuHelpAbout.setText("About"); jMenuHelpAbout.addActionListener(new MyZipFrame_jMenuHelpAbout_ActionAdapter(this)); jMenuItemOpenSource.setText("open source"); jMenuItemOpenSource.addActionListener(new MyZipFrame_jMenuItemOpenSource_actionAdapter(this)); jMenuItemOpenZip.setText("open zip"); jMenuItemOpenZip.addActionListener(new MyZipFrame_jMenuItemOpenZip_actionAdapter(this)); // buttonPanel.setAlignmentX((float) 0.0); // buttonPanel.setAlignmentY((float) 0.0); buttonPanel.setBorder(BorderFactory.createRaisedBevelBorder()); buttonPanel.setToolTipText("操作板"); buttonPanel.setLayout(flowLayout1); zipButton.setMaximumSize(new Dimension(57, 57)); zipButton.setMinimumSize(new Dimension(35, 9)); zipButton.setToolTipText("添加压缩文件"); zipButton.setIcon(zip); zipButton.setText(""); unzipButton.setMaximumSize(new Dimension(57, 57)); unzipButton.setToolTipText("释放压缩文件"); unzipButton.setIcon(unzip); unzipButton.setText(""); openButton.setBorder(null); openButton.setToolTipText("打开文件或目录"); openButton.setText("jButton1"); messageLabel.setText("欢迎使用myZip 进度:");//考虑加入文件信息 buttonPanel.add(openButton, null); buttonPanel.add(unzipButton, null); jMenuFile.add(jMenuItemOpenSource); jMenuFile.add(jMenuItemOpenZip); jMenuFile.add(jMenuFileExit); jMenuHelp.add(jMenuHelpAbout); jMenuBar1.add(jMenuFile); jMenuBar1.add(jMenuHelp); this.setJMenuBar(jMenuBar1); contentPane.add(buttonPanel, BorderLayout.NORTH); buttonPanel.add(zipButton, null); contentPane.add(listPanel, BorderLayout.CENTER); contentPane.add(barPanel, BorderLayout.SOUTH); barPanel.add(messageLabel, null); barPanel.add(ProgressBar, null); } //File | Exit action performed public void jMenuFileExit_actionPerformed(ActionEvent e) { System.exit(0); } //Help | About action performed public void jMenuHelpAbout_actionPerformed(ActionEvent e) { MyZipFrame_AboutBox dlg = new MyZipFrame_AboutBox(this); Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = getSize(); Point loc = getLocation(); dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setModal(true); dlg.pack(); dlg.show(); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { jMenuFileExit_actionPerformed(null); } } /** *<br>方法说明:实现文件的压缩处理 *<br>输入参数:String[] fs 压缩的文件数组 *<br>返回类型: */ public void ZipFiles(String[] fs){ try{ String fileName = fs[0]; FileOutputStream f = new FileOutputStream(fileName+".zip"); //使用输出流检查 CheckedOutputStream cs = new CheckedOutputStream(f,new Adler32()); //声明输出zip流 ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(cs)); //写一个注释 out.setComment("A test of Java Zipping"); //对多文件进行压缩 for(int i=1;i<fs.length;i++){ System.out.println("Write file "+fs[i]); BufferedReader in = new BufferedReader( new FileReader(fs[i])); out.putNextEntry(new ZipEntry(fs[i])); int c; while((c=in.read())!=-1) out.write(c); in.close(); } //关闭输出流 out.close(); System.out.println("Checksum::"+cs.getChecksum().getValue()); }catch(Exception e){ System.err.println(e); } }/** *<br>方法说明:解压缩Zip文件 *<br>输入参数:String fileName 解压zip文件名 *<br>返回类型: */ public void unZipFile(String fileName){ try{ System.out.println("读取ZIP文件........"); //文件输入流 FileInputStream fi = new FileInputStream(fileName+".zip"); //输入流检查 CheckedInputStream csi = new CheckedInputStream(fi,new Adler32()); //输入流压缩 ZipInputStream in2 = new ZipInputStream( new BufferedInputStream(csi)); ZipEntry ze; System.out.println("Checksum::"+csi.getChecksum().getValue()); //解压全部文件 while((ze = in2.getNextEntry())!=null){ System.out.println("Reading file "+ze); int x; while((x= in2.read())!=-1) //这里是写文件,write是以byte方式输出。 System.out.write(x); } in2.close(); }catch(Exception e){ System.err.println(e); } } /** *<br>方法说明:读取Zip文件列表 *<br>输入参数:String fileName zip文件名 *<br>返回类型:Vector 文件列表 */ public Vector listFile(String fileName){ try{ String[] aRst=null; Vector vTemp = new Vector(); //zip文件对象 ZipFile zf = new ZipFile(fileName+".zip"); Enumeration e = zf.entries(); while(e.hasMoreElements()){ ZipEntry ze2 = (ZipEntry)e.nextElement(); System.out.println("File: "+ze2); vTemp.addElement(ze2); } return vTemp; }catch(Exception e){ System.err.println(e); return null; } } void jMenuItemOpenSource_actionPerformed(ActionEvent e) { FileDialog fd = new FileDialog (this, "打开媒体文件", FileDialog.LOAD); fd.setDirectory (currentDirectory); fd.show (); //如果用户放弃选择文件,则返回 if (fd.getFile () == null) { return; } currentDirectory = fd.getDirectory (); String url=fd.getDirectory() +fd.getFile() ; /////////////////进行压缩文件(url),先判断扩展名 } void jMenuItemOpenZip_actionPerformed(ActionEvent e) { FileDialog fd = new FileDialog (this, "打开媒体文件", FileDialog.LOAD); fd.setDirectory (currentDirectory); fd.show (); //如果用户放弃选择文件,则返回 if (fd.getFile () == null) { return; } currentDirectory = fd.getDirectory (); String url=fd.getDirectory() +fd.getFile() ; ///////进行解压文件(url),先判断扩展名 }}class MyZipFrame_jMenuFileExit_ActionAdapter implements ActionListener { MyZipFrame adaptee; MyZipFrame_jMenuFileExit_ActionAdapter(MyZipFrame adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuFileExit_actionPerformed(e); }}class MyZipFrame_jMenuHelpAbout_ActionAdapter implements ActionListener { MyZipFrame adaptee; MyZipFrame_jMenuHelpAbout_ActionAdapter(MyZipFrame adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuHelpAbout_actionPerformed(e); }}class MyZipFrame_jMenuItemOpenSource_actionAdapter implements java.awt.event.ActionListener { MyZipFrame adaptee; MyZipFrame_jMenuItemOpenSource_actionAdapter(MyZipFrame adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItemOpenSource_actionPerformed(e); }}class MyZipFrame_jMenuItemOpenZip_actionAdapter implements java.awt.event.ActionListener { MyZipFrame adaptee; MyZipFrame_jMenuItemOpenZip_actionAdapter(MyZipFrame adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItemOpenZip_actionPerformed(e); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -