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

📄 java.txt

📁 JAVA压缩技术可能有些小错误不是本人写的
💻 TXT
字号:
//chp10

import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.TextArea;
import java.awt.TextFild;
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 TextZip extends Frame impements ActionListener{
   TextArea textarea;//显示数据文件的多行文本
   TextField inftip;//显示数据文件未压缩大小以及压缩大小单行文本显示域
   String doc;//存储随机生成的数据
   long doczipsize = 0;//压缩数据文件的大小
   public TextZip(){
          //生成菜单
          MenuBae menubar = new MenuBar();
          setMenuBar(menubar);
          Menu file = new Menu("File",true);
          menubar.add(file);
          MenuItem neww = new MenuItem("New");
          neww.addActionListenerListener(this);
          file.add(neww);
          MemuItern 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 TextFiled());
          //关闭当前的窗口,释放系统资源
          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.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;
                    showTextandInf();
            }
            private void openFile(){
                    //打开zip文件,将文件内容读入doc字符串变量中
                    FileDialog dlg = new FileDialog(this,"Open",FileDialog.LOAD);
                    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));
                         //读取下一个压缩文件入口,定位入口数据流开始位置
                         //从后缀为.zip文件入口读取文件,并决定入口数据流开始位置
                         zipis.getNextEntry();//将输入流定位在当前entry数据项位置
                         DataInputStream dis = new DataInputStream(zipis);
                         //用zip输入流构建DataInputStream
                         doc = dis.readUTF();读取文件内容
                         dis.close();//关闭文件
                         doczipsize = f.length();//
                         showTextandInfo();
                    }
                    catch(IOException ioe){
                          System.out.println(ioe);
                    }
            }
            private void saveFile(){
                    //打开zip文件,将doc字符串变量写入zip文件中
                    FileDialog dlg = new FileDialog(this,"Save",FileDialog.SAVE);
                    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 ioc){
                          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("无此命令!");
                     }
               } 
    }
                      


  
 
          

⌨️ 快捷键说明

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