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

📄 lastunzip.java

📁 里面包含了很多的JAVA基础的源程序,算法,想看就下吧
💻 JAVA
字号:
/**
*功能:文件解压
*用法:java ExtractZipFile zipfile DestinationPath
*是在ExtractZipFile基础上加上建立子目录的功能
*/
import java.io.*;
import java.util.*;
import java.util.zip.*;

public class LastUnZip
{
  
  public void unzip(String zf,String des)//传来的两个参数zf为要解压的zip文件,des表示解压到哪个目录
  {
    //First Scan the Zip File    
    ScanZipFile scanzipfile=new ScanZipFile();//创建外部类对象,调用他的scan方法
    if (scanzipfile.scan(zf)<0)//将要解压的文件名传进去,如果返回值小于0没有文件不能解压
    {
      System.out.println("UnZip Failed!Exiting now...");
    }
    else
    {
      System.out.println("**************************************************************");
      System.out.println("*  输入Y或y开始解压这个文件,输入任何其他值退出解压该文件    *");
      System.out.println("**************************************************************");      
      String inputString="";
      byte buffer[]=new byte[255];//创建长度为255字节的字节数组
      try
      {
        System.in.read(buffer,0,255);//从键盘接收字符到字节数组。
        inputString=new String(buffer);//将字节数组构造为字符串
      }
      catch(IOException ex)
      {
        System.out.println(ex);
      }
      if(inputString.indexOf("Y")!=-1||inputString.indexOf("y")!=-1)//如果该字符串中包含Y或者y执行一下程序
      {
              
        try
        {
            ZipInputStream zin = new ZipInputStream(new FileInputStream(zf));//创建解压缩文件对象
            ZipEntry entry;
            System.out.println("开始解压缩 "+zf+":");
            System.out.println("----------------------------------------------");
            String filename;
            while((entry=zin.getNextEntry())!=null)//取出压缩文件中的每一个文件对象
            {          
              if(entry.isDirectory() || entry.getName().equals("..\\")) continue; // 如果是目录          
              String prefilename=entry.getName();//获取压缩文件中的目录名+文件名
              /**
              *将ZipEntry中用于路径分割的“/”转换成Windows中的路径分割符“\”
              *如果一个ZipEntry中包含“/”,那么,说明它处于某个目录之下
              *那就应该首先为这个文件新建一个路径
              */
              System.out.println(prefilename);//测试看是否为目录名+文件名
              prefilename=prefilename.replace('/','\\');                        
              filename=des+"\\"+prefilename;//得到完整路径
              System.out.println(filename);
              int index1 = 0;
              int index2 = 0;
              String pathstr = "";
              File path;
              //递归建立目录
              while(((index2=filename.indexOf('\\',index1))!=-1))//返回\\在filename中位置index1以后第一次出现的位置
              {
                pathstr =pathstr + filename.substring(index1,index2)+"\\";//得到\\第一次出现前的路径名
                System.out.println(pathstr);
                path = new File(pathstr);//创建文件对象
                if(!path.exists())//判断该文件是否存在,如果不存在
                {
                  System.out.println("-----------------------------------------------------");
                  System.out.println("新建路径 "+path+"...");
                  System.out.println("-----------------------------------------------------");
                  path.mkdir();//创建相应的目录
                }
              index1 = index2 + 1;//
              }
              System.out.println(entry.getName());
              byte[] buf = new byte[1];
              BufferedInputStream bin = new BufferedInputStream(zin);//创建读出压缩文件的对象
              BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(filename));//创建写出对象
              while(bin.read(buf,0,1)!=-1)//读到字节数组中
              {
                bout.write(buf,0,1);//写出到filename指定的文件中
              }
              bout.close();        
              zin.closeEntry();
            }
            zin.close();          
            System.out.println("**************************************************************");
            System.out.println("*                       解压完成                             *");
            System.out.println("**************************************************************");  
        }
        catch(IOException e)
        {  
          System.out.println(e);
        }
      }
      else
      {
        System.out.println("**************************************************************");
        System.out.println("*                        退出解压过程                        *");
        System.out.println("**************************************************************");  
        System.exit(0);
      }
    }    
  }
  
  public static void main(String args[]) throws Exception
  {    
    if(args.length!=2)//此处控制控制台传来的参数
    {
      System.out.println("*****************************************");
      System.out.println("*    用法:java zip/jar文件 目标路径    *");
      System.out.println("* Usage:java zip/jarFile DestinationPath*");
      System.out.println("*****************************************");
      System.exit(-1);
    }
    else
    {
      LastUnZip luz = new LastUnZip();//创建当前类对象
      luz.unzip(args[0],args[1]);	//接收两个参数第一个为要解压的zip文件,后一个表示解压到哪个目录
    }
  }
}

⌨️ 快捷键说明

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