美文网首页
解压文件

解压文件

作者: 勤学奋进小郎君 | 来源:发表于2018-12-12 21:18 被阅读0次

不使用BufferedOutputStream的情况

引入读取输入流,并不知道会读多少字节数据,如果将byte数组设的过大,会造成存在很多空字符,并且写入到文件中,所以使用大小为1的数组长度最保稳

public class UnzipFile {
    private static File file; 
    private static FileInputStream fileInputStream;
    private static BufferedInputStream bufferedInputStream;
    private static ZipInputStream zipInputStream;
    private static ZipEntry zipEntry;
    
    private static String OUTPUT_FILE_PAHT;
    private static FileOutputStream fileOutputStream;
    private static BufferedOutputStream bufferedOutputStream;

    public static void TestUzipFile(String file_path) {
        UzipFile(file_path);
    }
    
    
    /*
     * @param filepath 需要解压的文件的路径
     * 
     */
    
    private static void UzipFile(String filepath) {
    OUTPUT_FILE_PAHT = System.getProperty("user.dir") + "\\AndroidManifest.xml";
    
    try {
        //获取压缩包输入流
        fileInputStream = new FileInputStream(new File(filepath));
        zipInputStream = new ZipInputStream(fileInputStream);
        while((zipEntry = zipInputStream.getNextEntry()) != null) {
            String fileName = zipEntry.getName();
            if(fileName.equals("AndroidManifest.xml")) {
                fileOutputStream = new FileOutputStream(OUTPUT_FILE_PAHT);
                bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
                byte[] bt = new byte[1];
                while(zipInputStream.read(bt) != -1) {
                    //解压文件到本地
                    fileOutputStream.write(bt);
                }
            }
        }
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally {
        try {
            fileOutputStream.close();
            zipInputStream.close();
            fileInputStream.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
}
}

正常解压代码:

    public static void TestUzipFile(String file_path) {
        UzipFile(file_path);
    }
    
    
    /*
     * @param filepath 需要解压的文件的路径
     * 
     */
    
    private static void UzipFile(String filepath) {
        OUTPUT_FILE_PAHT = System.getProperty("user.dir") + "\\AndroidManifest.xml";
        
        try {
            //获取压缩包输入流
            fileInputStream = new FileInputStream(new File(filepath));
            bufferedInputStream = new BufferedInputStream(fileInputStream);
            zipInputStream = new ZipInputStream(bufferedInputStream);
            while((zipEntry = zipInputStream.getNextEntry()) != null) {
                String fileName = zipEntry.getName();
                if(fileName.equals("AndroidManifest.xml")) {
                    System.out.println(OUTPUT_FILE_PAHT);
                    fileOutputStream = new FileOutputStream(OUTPUT_FILE_PAHT);
                    bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
                    int buff_size;
                    while((buff_size=zipInputStream.read()) != -1) {
                        //解压文件到本地
                        bufferedOutputStream.write(buff_size);
                    }
                }
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            try {
                bufferedOutputStream.close();
                fileOutputStream.close();
                zipInputStream.close();
                fileInputStream.close();
                bufferedInputStream.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

相关文章

  • shell解压命令

    解压全部 gz文件:gunzip *g 解压zip文件: unzip xxx.zip 解压tar.gz文件:tar...

  • 解压文件

    .bz解压1:bzip2 -d FileName.bz解压2:bunzip2 FileName.bz .bz2解压...

  • 解压文件

    不使用BufferedOutputStream的情况 引入读取输入流,并不知道会读多少字节数据,如果将byte数组...

  • iOS中解压rar文件

    iOS中基于UnrarKit解压rar文件 iOS中解压rar文件,使用UnrarKit框架解压,框架github...

  • 文件复制/解压

    //--------------------复制文件 //--------------------解压文件------

  • Mac 配置Tomcat 8.5.11

    下载Tomcat Tomcat下载地址 复制文件 解压刚才下载的 zip 包.解压文件 将解压的apache-to...

  • word文档操作

    @压缩压下面的那个,解压要解压到文件目录,这样解压的文件都在文件目录里。 @文件里有新建,保存,另存,保存类型一般...

  • mac os 解析excel

    使用SSZipArchive解压excel文件获得一个文件,SSZipArchive解压的时候会指定一个路径,解压...

  • PHP操作文件

    下载文件: 解压文件: 读取文件:

  • 查看ipa安装包的包名(bundle id)

    1、ipa文件用解压器解压,得到Payload文件 2、打开Payload文件,里面有对应的.app文件,点击右键...

网友评论

      本文标题:解压文件

      本文链接:https://www.haomeiwen.com/subject/ivfmhqtx.html