⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compressfile.java

📁 一个简单的文件压缩解压缩工具(JAVA语言)
💻 JAVA
字号:
/*
 * 创建日期 2008-7-13
 *
 * TODO 要更改此生成的文件的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */

/**
 * @author jiang
 *
 * TODO 要更改此生成的类型注释的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
   
public class CompressFile extends JFrame implements ActionListener{ 
	
	private String str1;
	private String str2;
	private String s1="F:/test.zip";
	private String s2="E:/";
	
    private static CompressFile instance = new CompressFile(); 
    
    private JLabel[] m_label={new JLabel("从"),new JLabel("压缩到"),new JLabel("解压到"),
    		                   new JLabel("从")};
    private JTextField[] m_textField={new JTextField("",11),new JTextField("",11),
    		                           new JTextField("",11),new JTextField("",11)};
    
    private JButton[] b={new JButton("选择"),new JButton("选择"),new JButton("开始压缩"),
    		              new JButton("开始解压")};
    
        
    private CompressFile() {  
    	super("压缩/解压缩文件");
    	
    	Container container=getContentPane();
    	container.setLayout(new FlowLayout(FlowLayout.LEFT));
    	
    	container.add(m_label[0]);
    	container.add(m_textField[0]);
    	container.add(b[0]);
    	
    	m_textField[1].setText(s1);
    	m_textField[3].setText(s2);
    	m_textField[1].setEditable(false);
    	m_textField[3].setEditable(false);
    	
    	container.add(m_label[1]);
    	container.add(m_textField[1]);
    	  	
    	container.add(b[2]);
    	
    	///////////////////////////////////////////
    	
    	container.add(m_label[3]);
    	container.add(m_textField[2]);
    	container.add(b[1]);
    	container.add(m_label[2]);
    	container.add(m_textField[3]);
    	
    	container.add(b[3]);
   	
    	b[0].addActionListener(this);
    	b[1].addActionListener(this);
    	b[2].addActionListener(this);
    	b[3].addActionListener(this);
    	
    	
    	setSize(500,150);
    	setVisible(true);
    } 
    
    public void actionPerformed(ActionEvent e)
    { 
		if (e.getSource()==b[0])
			openFile();	
		else if(e.getSource()==b[1])
			openFile2();
		else if(e.getSource()==b[2])
			beginCompress();
		else if(e.getSource()==b[3])
			beginBeCompress();	
		else {  
		} 
    }
    
    private void openFile(){  
		FileDialog dlg=new FileDialog(this,"选择",FileDialog.LOAD);
		dlg.show();
		str1=dlg.getDirectory()+dlg.getFile();
		m_textField[0].setText(str1);
    }
    
    private void openFile2(){  
		FileDialog dlg=new FileDialog(this,"选择",FileDialog.LOAD);
		dlg.show();
		str2=dlg.getDirectory()+dlg.getFile();
		m_textField[2].setText(str2);
    }
    
    private void beginCompress()
    {
    	try {       
            zip(m_textField[0].getText(), m_textField[1].getText()); 
            JOptionPane.showMessageDialog(null,"压缩完毕!");
        } catch (IOException e) {       
            e.printStackTrace();       
        }   
    }
    
    private void beginBeCompress()
    {
    	try {       
    		unzip(m_textField[2].getText(), m_textField[3].getText()); 
            JOptionPane.showMessageDialog(null,"解压完毕!");
        } catch (IOException e) {       
            e.printStackTrace();       
        }   
    }
    
    public static CompressFile getInstance() {    
        return instance;    
    }    
   
    public synchronized void zip(String inputFilename, String zipFilename)    
            throws IOException {    
        zip(new File(inputFilename), zipFilename);    
    }    
        
    public synchronized void zip(File inputFile, String zipFilename) throws IOException {    
        ZipOutputStream out = new ZipOutputStream(new FileOutputStream(    
                zipFilename));    
   
        try {    
            zip(inputFile, out, "");    
        } catch (IOException e) {    
            throw e;    
        } finally {    
            out.close();    
        }    
    }    
   
    private synchronized void zip(File inputFile, ZipOutputStream out, String base)    
            throws IOException {    
        if (inputFile.isDirectory()) {    
            File[] inputFiles = inputFile.listFiles();    
            out.putNextEntry(new ZipEntry(base + "/"));    
            base = base.length() == 0 ? "" : base + "/";    
            for (int i = 0; i < inputFiles.length; i++) {    
                zip(inputFiles[i], out, base + inputFiles[i].getName());    
            }    
   
        } else {    
            if (base.length() > 0) {    
                out.putNextEntry(new ZipEntry(base));    
            } else {    
                out.putNextEntry(new ZipEntry(inputFile.getName()));    
            }    
   
            FileInputStream in = new FileInputStream(inputFile);    
            try {    
                int c;    
                byte[] by = new byte[BUFFEREDSIZE];    
                while ((c = in.read(by)) != -1) {    
                    out.write(by, 0, c);    
                }    
            } catch (IOException e) {    
                throw e;    
            } finally {    
                in.close();    
            }    
        }    
    }    
   
    public synchronized void unzip(String zipFilename, String outputDirectory)    
            throws IOException {    
        File outFile = new File(outputDirectory);    
        if (!outFile.exists()) {    
            outFile.mkdirs();    
        }    
   
        ZipFile zipFile = new ZipFile(zipFilename);    
        Enumeration en = zipFile.entries();    
        ZipEntry zipEntry = null;    
        while (en.hasMoreElements()) {    
            zipEntry = (ZipEntry) en.nextElement();    
            if (zipEntry.isDirectory()) {    
                // mkdir directory    
                String dirName = zipEntry.getName();    
                dirName = dirName.substring(0, dirName.length() - 1);    
   
                File f = new File(outFile.getPath() + File.separator + dirName);    
                f.mkdirs();    
   
            } else {    
                // unzip file    
                File f = new File(outFile.getPath() + File.separator    
                        + zipEntry.getName());    
                f.createNewFile();    
                InputStream in = zipFile.getInputStream(zipEntry);    
                FileOutputStream out = new FileOutputStream(f);    
                try {    
                    int c;    
                    byte[] by = new byte[BUFFEREDSIZE];    
                    while ((c = in.read(by)) != -1) {    
                        out.write(by, 0, c);    
                    }    
                    // out.flush();    
                } catch (IOException e) {    
                    throw e;    
                } finally {    
                    out.close();    
                    in.close();    
                }    
            }    
        }    
    }    
   
    private static final int BUFFEREDSIZE = 1024;    
        
    public static void main(String[] args) {       
        CompressFile app = new CompressFile();
        app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }     
}    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -