Java压缩/解压文件的实现代码

时间:2022-09-07 18:21:16

用java压缩/解压文件: 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.zip.*;
import javax.swing.*;
//从压缩包中提取文件
public class ZipExtractDemo extends JFrame{
  JFileChooser fileChooser; //文件选择器
  JTextField jtfTarget; //待解压文件路径
  JButton jbSelected; //选择文件按钮
  JList files; //信息显示列表框
  JButton jbExtract; //解压按钮
  ZipFile zFile; 
  public ZipExtractDemo(){
    super("从压缩包中提取文件"); //调用父类构造函数
    fileChooser=new JFileChooser(); //实例化组件
    jtfTarget=new JTextField(13);
    jbSelected=new JButton("选择");
    jbExtract=new JButton("解压");
    files=new JList();
    JPanel panel=new JPanel(); //实例化面板
    panel.add(new JLabel("目标文件"));
    panel.add(jtfTarget); //增加组件到面板上
    panel.add(jbSelected);
    panel.add(jbExtract);
    JScrollPane jsp=new JScrollPane(files);
    jsp.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); //设置边界
    Container container=getContentPane(); //得以容器
    container.add(panel,BorderLayout.NORTH); //增加组件到容器上
    container.add(jsp,BorderLayout.CENTER);
    jbSelected.addActionListener(new ActionListener(){ //文件选择按钮事件处理
      public void actionPerformed(ActionEvent event) {
        if (fileChooser.showOpenDialog(ZipExtractDemo.this)==JFileChooser.APPROVE_OPTION){ //弹出文件选择器,并判断是否点击了打开按钮
          String fileName=fileChooser.getSelectedFile().getAbsolutePath();  //得到选择文件的绝对路径
          jtfTarget.setText(fileName); //设置目标文件名
          showFiles(); //显示压缩包内容
      }
      }
    });
    jbExtract.addActionListener(new ActionListener(){  //解村文件按钮事件处理
      public void actionPerformed(ActionEvent event) { 
          extractFile(files.getSelectedValue().toString()); //解压指定文件
      }
    });
    setSize(350,250);  //设置窗口尺寸
    setVisible(true);  //设置窗口可视
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
  }
  public void showFiles(){
    try{
    zFile=new ZipFile(jtfTarget.getText()); //得到压缩文件实例
    ZipEntry entry;
    Vector vec=new Vector(); //文件枚举
      Enumeration enu=zFile.entries(); //得到压缩条目的枚举对象
      while (enu.hasMoreElements()){ //依次枚举条目
        entry=(ZipEntry) enu.nextElement(); //得到压缩条目
        vec.add(entry.getName());  //增加文件到Vector内   
      }
      files.setListData(vec); //设置文件列表框数据
      files.getSelectedValues();
    }
    catch (Exception ex){
      ex.printStackTrace(); //输出错误信息
    }    
  }
  public void extractFile(String name){ //解压文件
    try{
    ZipEntry entry=zFile.getEntry(name); 
    entry.getComment();
    entry.getCompressedSize();
    entry.getCrc();
    entry.isDirectory();
    entry.getSize();
    entry.getMethod();
    InputStream in=zFile.getInputStream(entry); //得到文件输入流
    File file=new File(name); //实例化文件对象
    FileOutputStream out=new FileOutputStream(file); //得到文件输出流
    byte[] buffer=new byte[1024]; //缓冲区大小
    int length;
    while((length = in.read(buffer)) != -1) { //循环读取数据
      out.write(buffer, 0, length); //写数据到输出流
    }
      JOptionPane.showMessageDialog(ZipExtractDemo.this,"解压成功,解压到:"+file.getAbsolutePath()); 
    in.close(); //关闭输入流
    out.close(); //关闭输出流  
    } catch (Exception ex){}
  }
  public static void main(String[] args){
    new ZipExtractDemo();
  }
}

总结

以上所述是小编给大家介绍的Java压缩/解压文件的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!

原文链接:http://blog.csdn.net/qq_39045774/article/details/78052183