📄 myzip.java
字号:
/*
// header - edit "Data/yourJavaHeader" to customize
// contents - edit "EventHandlers/Java file/onCreate" to customize
//
*/
import java.awt.*;
import java.util.*;
import java.util.zip.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.swing.table.*;
import javax.swing.table.*;
import javax.swing.event.*;
import javax.swing.border.*;
import java.util.Date;
import java.awt.Toolkit.*;
class MainForm extends JFrame
{
public TableModel dataModel = new AbstractTableModel() {
public int getColumnCount() { return 10; }
public int getRowCount() { return 10;}
public Object getValueAt(int row, int col) { return new Integer(row*col); }
};
Object [][] ceils = {{new Integer(1),new Integer(2),new Integer(3)},{new Integer(1),new Integer(2),new Integer(3)},{new Integer(1),new Integer(2),new Integer(3)}};
String[] column = {"File Name","Original Size","Compressed Size","Ratio","Time","CRC"};
private JToolBar bar = new JToolBar();
private JMenuBar mb = new JMenuBar();
private JMenu m1 = new JMenu("File");
private JMenuItem NewItem = new JMenuItem("New Zip",new ImageIcon(getClass().getResource("image/MNEW.JPG")));
private JMenuItem OpenItem = new JMenuItem("Open Zip",new ImageIcon(getClass().getResource("image/MOPEN.JPG")));
private JMenuItem CloseItem = new JMenuItem("Close Zip",new ImageIcon(getClass().getResource("image/MCLOSE.JPG")));
private JMenuItem ExitItem = new JMenuItem("Exit",new ImageIcon(getClass().getResource("image/MEXIT.JPG")));
private JMenu muistyle = new JMenu("Look&Feel");
private JMenu maction = new JMenu("Action");
private JMenuItem madd = new JMenuItem("Add",new ImageIcon(getClass().getResource("image/MADD.JPG")));
private JMenuItem mdelete = new JMenuItem("Delete",new ImageIcon(getClass().getResource("image/MDEL.JPG")));
private JMenuItem mview = new JMenuItem("View",new ImageIcon(getClass().getResource("image/MVIEW.JPG")));
private JMenuItem mextract = new JMenuItem("Extract",new ImageIcon(getClass().getResource("image/MEXTRACT.JPG")));
private JMenu mhelp = new JMenu("Help");
private JMenuItem mabout = new JMenuItem("About");
private JRadioButtonMenuItem muiwindow = new JRadioButtonMenuItem("Window");
private JRadioButtonMenuItem muimetal = new JRadioButtonMenuItem("Metal");
private JRadioButtonMenuItem muimotif = new JRadioButtonMenuItem("Motif");
ButtonGroup muigroup = new ButtonGroup();
private Vector namelist = new Vector();
DefaultTableModel dm = new DefaultTableModel(column, 0);
JTable table = new JTable(dm);
private JScrollPane sp= new JScrollPane(table);
JButton badd;
JButton bdelete;
JButton bnew;
JButton bview;
JButton bjar;
JButton bexit;
ImageIcon icon1;
JLabel sbl1 = new JLabel("Current filename: -");
JLabel sbl2 = new JLabel("Total file: -");
JLabel sbl3 = new JLabel("Selected file: -");
JPanel statusbar;
private Vector FileList = new Vector();
String zipname = null;
ExtractDlg ed;
ViewDlg vd;
AboutDlg ad;
private void removeRows()
{
while(dm.getRowCount()!=0)
{
dm.removeRow(0);
}
}
MainForm()
{
Container form = getContentPane();
icon1 = new ImageIcon(getClass().getResource("image/new.jpg"));
bnew = new JButton("",icon1);
//System.out.println(icon1.getIconHeight());
icon1 = new ImageIcon(getClass().getResource("image/open.jpg"));
JButton b1 =new JButton("",icon1);
icon1 = new ImageIcon(getClass().getResource("image/extract.jpg"));
JButton b2 =new JButton("",icon1);
icon1 = new ImageIcon(getClass().getResource("image/add.jpg"));
badd = new JButton("",icon1);
icon1 = new ImageIcon(getClass().getResource("image/delete.jpg"));
bdelete = new JButton("",icon1);
icon1 = new ImageIcon(getClass().getResource("image/view.jpg"));
bview = new JButton("",icon1);
icon1 = new ImageIcon(getClass().getResource("image/jar.jpg"));
bjar = new JButton("",icon1);
icon1 = new ImageIcon(getClass().getResource("image/exit.jpg"));
bexit = new JButton("",icon1);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.getSelectionModel().addListSelectionListener(new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent e)
{
int[] i = table.getSelectedRows();
sbl3.setText("Selected file: "+(String)dm.getValueAt(i[0],0));
}
}
);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
bnew.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
newZipFile();
}
}
);
b1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
openZipFile();
if(zipname!=null)
{
sbl1.setText("Current filename: "+zipname);
sbl2.setText("Total compressed files: "+getZipedCount(zipname));
}
}
});
b2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(zipname == null) return;
if(ed==null)ed = new ExtractDlg(MainForm.this);
Toolkit tk1 = Toolkit.getDefaultToolkit();
ed.setLocation(new Point((tk1.getScreenSize().width/2)-160,(tk1.getScreenSize().height/2)-125));
ed.show();
}
});
badd.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(zipname!=null)
{
addFile();
removeRows();
scanZipFile(zipname);
}
}
});
bview.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(zipname==null) return;
if(vd==null)
{
vd =new ViewDlg();
}
int[] i = table.getSelectedRows();
if(i[0]!=-1)
{
vd.viewText(zipname,(String)dm.getValueAt(i[0],0));
}
}
});
bexit.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
bdelete.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
int[] i = table.getSelectedRows();
if((zipname!=null) && (i!=null) && (i[0]!=1) &&(i[0]<table.getRowCount()))
{
deleteZipFile((String)dm.getValueAt(i[0],0));
reloadZipFile();
}
}
});
bjar.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(MainForm.this,"Sorry,this function will be implemented in next version \n 这个功能将在下一个版本实现");
}
});
statusbar = new JPanel();
statusbar.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
statusbar.setLayout(new FlowLayout(FlowLayout.LEFT));
sbl1.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
sbl2.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
sbl3.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
statusbar.add(sbl1);
statusbar.add(sbl2);
statusbar.add(sbl3);
b1.setToolTipText("Open");
bar.add(bnew);
bnew.setToolTipText("Create new Zip file");
bar.add(b1);
b1.setToolTipText("Open Zip file");
bar.add(b2);
b2.setToolTipText("Extraxt file");
bar.add(badd);
badd.setToolTipText("Add file to Zip");
bar.add(bdelete);
bdelete.setToolTipText("Delete file in Zip file");
bar.add(bview);
bview.setToolTipText("View selected file");
bar.add(bjar);
bjar.setToolTipText("Create new jar file");
bar.add(bexit);
bexit.setToolTipText("Exit");
form.add(bar,"North");
form.add(sp,"Center");
form.add(statusbar,"South");
initMenu();
}
public void openZipFile()
{
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("C:\\"));
chooser.setFileFilter(new javax.swing.filechooser.FileFilter()
{
public boolean accept(File f)
{
if(f.getName().toLowerCase().endsWith(".zip") || f.getName().toLowerCase().endsWith(".jar") || f.isDirectory())
return true;
else
return false;
}
public String getDescription()
{
return "zip and jar file";
}
});
int r = chooser.showOpenDialog(MainForm.this);
if(r==JFileChooser.APPROVE_OPTION)
{
zipname = chooser.getSelectedFile().getPath();
removeRows();
scanZipFile(zipname);
}
}
public void scanZipFile(String filename)
{
String[] ob = new String[6];
float ratio = 0;
try
{
ZipInputStream zin = new ZipInputStream(new FileInputStream(filename));
ZipEntry entry;
while((entry=zin.getNextEntry())!=null)
{
//v.clear();
/*v.add(entry.getName());
v.add(new Long(entry.getSize()));
v.add(new Long(entry.getCompressedSize() ));
v.add(new Long(entry.getTime()));
v.add(new Long(entry. getCrc()));*/
if(entry.isDirectory() || entry.getName().equals("..\\")) continue;
ob[0] = (entry.getName());
ob[1] = (new Long(entry.getSize())).toString();
ob[2] = (new Long(entry.getCompressedSize() )).toString();
ob[3] = (100*entry.getCompressedSize() / entry.getSize())+"%" ;
ob[4] = (new Date(entry.getTime())).toString();
ob[5] = (new Long(entry. getCrc())).toString();
// System.out.println(v.toString());
zin.closeEntry();
dm.addRow(ob);
}
zin.close();
}
catch(IOException e)
{
}
}
public boolean extractSelFile(String entryname,String filename)
{
if((zipname!=null) &&(filename!=null) && (entryname!=null))
{
try
{
ZipInputStream zin = new ZipInputStream(new FileInputStream(zipname));
ZipEntry entry;
while((entry=zin.getNextEntry())!=null)
{
if(entry.getName().equals(entryname))
{
byte[] buf = new byte[1];
BufferedInputStream bin = new BufferedInputStream(zin);
BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(filename));
while(bin.read(buf,0,1)!=-1)
{
bout.write(buf,0,1);
}
bout.close();
}
zin.closeEntry();
}
zin.close();
}
catch(IOException e)
{
System.out.println(e);
return false;
}
return true;
}
else
{
return false;
}
}
public void deleteZipFile(String entry)
{
ZipOutputStream zout = null;
ZipInputStream zin = null;
File tmpzip = null;
try
{
tmpzip = File.createTempFile("zip",".tmp",new File(".\\"));
zin = new ZipInputStream(new FileInputStream(zipname));
zout = new ZipOutputStream(new FileOutputStream(tmpzip));
ZipEntry ze;
int len = 0;
byte[] b = new byte[10240];
while((ze=zin.getNextEntry())!=null )
{
if(ze.getName().equals(entry))
{
zin.closeEntry();
continue;
}
zout.putNextEntry(new ZipEntry(ze.getName()));
//System.out.println(ze.getName());
while((len=zin.read(b))!=-1)
{
zout.write(b,0,len);
}
zout.closeEntry();
zin.closeEntry();
}
ZipFile tmpzf = new ZipFile(zipname);
if ((tmpzf.size())==1)
{
ze = new ZipEntry("..\\");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -