用java压缩文件 (ZIP)
/* 写的很烂,用java压缩文件的类,有空再修改修改 ^__^ */
import java.util.Vector;
import java.awt.event.*;
import java.util.zip.*;
import java.awt.*;
import java.io.*;
import javax.swing.JTextArea;
import javax.swing.JFrame;
public class TestZip extends JFrame implements ActionListener
{
JTextArea text;
Vector vFile = new Vector();
public TestZip()
{
MenuBar menubar = new MenuBar();
setMenuBar(menubar);
Menu file = new Menu("File",true);
menubar.add(file);
MenuItem add=new MenuItem("Add");
add.addActionListener(this);
file.add(add);
MenuItem clear=new MenuItem("Clear");
clear.addActionListener(this);
file.add(clear);
MenuItem save=new MenuItem("Save");
save.addActionListener(this);
file.add(save);
MenuItem exit=new MenuItem("Exit");
exit.addActionListener(this);
file.add(exit);
text = new JTextArea();
text.setBounds(0,0,180,80);
this.getContentPane().add(text);
}
public static void main(String args[])
{
TestZip ok = new TestZip();
ok.setTitle("zip sample");
ok.setSize(200,80);
ok.show();
}
private void openFile()
{
//打开zip文件,将文件内容读入doc字符串变量中。
FileDialog dlg=new FileDialog(this,"Open",FileDialog.LOAD );
dlg.show();
String sourcePath=dlg.getDirectory()+dlg.getFile();
vFile.addElement(new File(sourcePath));
text.setText("open : " + vFile.size());
}
private void saveFile()
{
//打开zip文件,将doc字符串变量写入zip文件中。
FileDialog dlg = new FileDialog(this,"Save",FileDialog.SAVE);
dlg.show();
String desPath = dlg.getDirectory()+dlg.getFile();
try{
File f = new File(desPath);
// 用文件输出流构建ZIP压缩输出流
ZipOutputStream zipos = new ZipOutputStream(new FileOutputStream(f));
zipos.setMethod(ZipOutputStream.DEFLATED); //于已压缩条目的压缩方法
//生成一个ZIP entry,写入文件输出流中,并将输出流定位于entry起始处。
DataOutputStream dos = new DataOutputStream(zipos);
for(int i = 0 ; i < vFile.size() ; i++ )
{
File fi = (File)vFile.elementAt(i);
FileInputStream fis = new FileInputStream(fi);
DataInputStream dis = new DataInputStream(fis);
zipos.putNextEntry(new ZipEntry(fi.getName()));
byte[] buffer = new byte[1024];
int bytes;
while((bytes = dis.read(buffer)) != -1)
{
dos.write(buffer, 0, bytes);
}
dis.close();
fis.close();
}
dos.close();
zipos.close();
text.setText("");
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
}
public void actionPerformed(ActionEvent e)
{
String arg = e.getActionCommand();
if("Add".equals(arg)) openFile();
else if("Clear".equals(arg)) vFile.removeAllElements();
else if("Save".equals(arg)) saveFile();
else if ("Exit".equals(arg)){this.dispose();System.exit(0);}
}
public void windowClosing(WindowEvent e) {
this.dispose();
System.exit(0);
}
本文提供了一个使用Java实现ZIP文件压缩的简单示例。该示例通过Swing创建了一个图形用户界面,允许用户添加文件到压缩列表,并保存为ZIP格式。代码详细展示了如何逐个读取文件并压缩。
394

被折叠的 条评论
为什么被折叠?



