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

📄 testzip.java

📁 用java实现的将各种文件压缩或解压缩zip文件。
💻 JAVA
字号:
import java.awt.FileDialog;import java.awt.Frame;import java.awt.Menu;import java.awt.MenuBar;import java.awt.MenuItem;import java.awt.TextArea;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.zip.ZipEntry;import java.util.zip.ZipInputStream;import java.util.zip.ZipOutputStream;public class TestZip extends Frame implements ActionListener {        TextArea textarea; //显示数据文件的多行文本        TextField infotip; //显示数据文件未压缩大小以及压缩大小单行文本显示域        String doc; //存储随机生成的数据        long doczipsize = 0;//压缩数据文件的大小        public TestZip() {                //生成菜单                MenuBar menubar = new MenuBar();                setMenuBar(menubar);                Menu file = new Menu("File", true);                menubar.add(file);                MenuItem neww = new MenuItem("New");                neww.addActionListener(this);                file.add(neww);                MenuItem open = new MenuItem("Open");                open.addActionListener(this);                file.add(open);                MenuItem save = new MenuItem("Save");                save.addActionListener(this);                file.add(save);                MenuItem exit = new MenuItem("Exit");                exit.addActionListener(this);                file.add(exit);                //随机生成的数据文件的多行文本显示域                add("Center", textarea = new TextArea());                //提示文本原始大小、压缩大小的单行文本显示域                add("South", infotip = new TextField());                //关闭当前的窗口,释放系统资源                this.addWindowListener(                                new WindowAdapter(){                                        public void windowClosing(WindowEvent e){                                                System.exit(0);                                        }                                }                );        }        public static void main(String args[]) {                TestZip ok = new TestZip();                ok.setTitle("zip sample");                ok.setSize(600, 300);                //ok.show();                ok.setVisible(true);        }        private void randomData() {                //随机生成50个double数据,并放在doc字符串变量中。                doc = "";                for (int i = 1; i < 51; i++) {                        double rdm = Math.random() * 10;                        doc = doc + new Double(rdm).toString();                        if (i % 5 == 0)                                doc = doc + "\n";                        else                                doc = doc + " ";                }                doczipsize = 0;                showTextandInfo();        }        private void openFile() {                //打开zip文件,将文件内容读入doc字符串变量中。                FileDialog dlg = new FileDialog(this, "Open", FileDialog.LOAD);                //dlg.show();//已经不赞成使用                dlg.setVisible(true);                //取得文件目录、文件名                String filename = dlg.getDirectory() + dlg.getFile();                try {                        //创建一个文件实例                        File f = new File(filename);                        if (!f.exists())                                return;                        //文件不存在,则返回                        //用文件输入流构建ZIP压缩输入流                        ZipInputStream zipis = new ZipInputStream(new FileInputStream(f));                        //Reads the next ZIP file entry and                        //positions the stream at the beginning of the entry data.                        //从后缀为.zip文件的入口读取文件,并决定入口数据流数据的位置。                        zipis.getNextEntry();	//将输入流定位在当前entry数据项位置                        DataInputStream dis = new DataInputStream(zipis);                        //用ZIP输入流构建DataInputStream                        doc = dis.readUTF();//读取文件内容                        dis.close();//关闭文件                        doczipsize = f.length();//获取ZIP文件长度                        showTextandInfo();//显示数据                }                catch (IOException ioe) {                        System.out.println(ioe);                }        }        private void saveFile() {                //打开zip文件,将doc字符串变量写入zip文件中。                FileDialog dlg = new FileDialog(this, "Save", FileDialog.SAVE);                //dlg.show();                dlg.setVisible(true);                String filename = dlg.getDirectory() + dlg.getFile();                try {                        //检查文件的后缀是否为“zip”,如果不是以“.zip”结尾则自动增加                        if(! filename.endsWith(".zip")){                                filename += ".zip";                        }                        File f = new File(filename); //			创建一个文件实例                        //检查文件是否存在,如果不存在就重新创建一个新的文件。                        if (!f.exists())                                f.createNewFile();                        //用文件输出流构建ZIP压缩输出流                        ZipOutputStream zipos = new ZipOutputStream(new FileOutputStream(f));                        zipos.setMethod(ZipOutputStream.DEFLATED);//设置压缩方法                        zipos.putNextEntry(new ZipEntry("zip")); //生成一个ZIP entry,写入文件输出流中,并将输出流定位于entry起始处。                        DataOutputStream os = new DataOutputStream(zipos);                        //用ZIP输出流构建DataOutputStream;                        os.writeUTF(doc);//将随机生成的数据写入文件中                        os.close();//关闭数据流                        doczipsize = f.length();			//获取压缩文件的长度                        showTextandInfo();//显示数据                }                catch (IOException ioe) {                        System.out.println(ioe);                }        }        private void showTextandInfo() {                //显示数据文件和压缩信息                textarea.replaceRange(doc, 0, textarea.getText().length());                infotip.setText("uncompressed size: " + doc.length()                                + "compressed size: " + doczipsize);        }        public void actionPerformed(ActionEvent e) {                String arg = e.getActionCommand();                if ("New".equals(arg))                        randomData();                else if ("Open".equals(arg))                        openFile();                else if ("Save".equals(arg))                        saveFile();                else if ("Exit".equals(arg)) {                        dispose();//关闭窗口                        System.exit(0);//关闭程序                }                else {                        System.out.println("no this command!");                }        }}

⌨️ 快捷键说明

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