【Java开源代码栏目提醒】:网学会员--在 Java开源代码编辑为广大网友搜集整理了:ZipDemo.java绩等信息,祝愿广大网友取得需要的信息,参考学习。
import javax.swing.*;
import java.io.*;
import java.util.*;
import java.util.zip.*;
import java.awt.*;
import java.awt.event.*;
public class ZipDemo extends JFrame implements ActionListener{
String directory = "d:"; // 默认目录
JTextArea Area = new JTextArea();
JButton Start= new JButton("开始");
JButton Open = new JButton("打开");
JTextField Text1 = new JTextField();
JTextField Text2 = new JTextField();
public ZipDemo(){
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
setSize(450,250); // 设置窗口大小
setTitle("压缩和解压文件");
// 窗体布局
JScrollPane Jsp = new JScrollPane(Area);
JPanel p = new JPanel(new GridLayout(2,2,0,0));
p.add(new JLabel("源文件 :",JLabel.CENTER));
p.add(Text1);
p.add(Open);
p.add(new JLabel("目标文件 :",JLabel.CENTER));
p.add(Text2);
Open.setActionCommand("Open");
Start.setActionCommand("Start");
getContentPane().add(Jsp,"Center");
getContentPane().add(p,"North");
getContentPane().add(Start,"South");
Open.addActionListener(this);
Start.addActionListener(this);
// 设置文本区为不可写
Area.setEditable(false);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
String cmd = e.getActionCommand();
// 处理单击开始控件事件
if(cmd.equals("Start")){
String Sour = Text1.getText();
String Dest = Text2.getText();
// 获取文件后缀名
String SSuffix = Sour.substring(Sour.length()-4,Sour.length()).toLowerCase();
String DSuffix = Dest.substring(Dest.length()-4,Dest.length()).toLowerCase();
if(SSuffix.equals(".zip")){ // 若原文件为zip文件,则解压
Area.append("\nUnzip File from "+Text1.getText()+" to "+Text2.getText()+"\n");
try{
unzip();
} catch(Exception er){
er.printStackTrace();
}
}
if(DSuffix.equals(".zip")){ // 若目标文件为zip格式,则压缩
Area.append("\nZip File "+Text1.getText()+" to "+Text2.getText()+"\n");
try{
zip();
} catch(Exception er){
er.printStackTrace();
}
}
}
// 处理单击打开控件事件
else if(cmd.equals("Open")){
FileDialog myFileDialog = new FileDialog(this,"打开",FileDialog.LOAD);
myFileDialog.setDirectory(directory);
myFileDialog.setVisible(true);
directory = myFileDialog.getDirectory();
Text1.setText(directory+myFileDialog.getFile());
myFileDialog.dispose();
}
}
// 解压文件
void unzip() throws Exception{
byte[] buffer = new byte[1024];
File file = new File(Text2.getText());
if(!file.exists())
file.mkdirs();
ZipEntry ze = null;
ZipFile zf = new ZipFile(new File(Text1.getText()));
Enumeration Enum = zf.entries();
while(Enum.hasMoreElements()){
ze = (ZipEntry)Enum.nextElement();
file = new File(Text2.getText()+File.separator+ze.getName());
if(!file.exists()){
file.createNewFile();
}
InputStream is = zf.getInputStream(ze);
DataInputStream dis = new DataInputStream(is);
FileOutputStream fos = new FileOutputStream(file);
DataOutputStream dos = new DataOutputStream(fos);
Area.append("Starting Unzip ... ... \n");
int n;
while((n = dis.read(buffer,0,buffer.length)) != -1){
dos.write(buffer,0,n);
}
dis.close();
dos.close();
Area.append("\tUnzipped "+ze.getName()+"\n");
Area.append("Unzip Complete.\n");
}
}
//
压缩文件
void zip() throws Exception{
byte[] buffer = new byte[1024];
File file = new File(Text1.getText());
FileInputStream fis = new FileInputStream(file);
DataInputStream dis = new DataInputStream(fis);
File ZipFile = new File(Text2.getText());
if(!ZipFile.exists()){
File ZipDir = new File(Zip