2 class brick class_brick 于 2016.02.23 16:45 提问

java读取zip压缩文件里面二级文件夹目录内的文件的问题

我想在不解压的条件下得到一个压缩文件夹内部的二级目录下的文件流,但是搜了好久也没找到
代码如下

import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.security.GeneralSecurityException;
import java.security.cert.X509Certificate;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

import sun.security.pkcs.PKCS7;

public class X509Util {
public static X509Certificate readSignatureBlock(InputStream in) throws IOException, GeneralSecurityException {

PKCS7 pkcs7 = new PKCS7(in);

return pkcs7.getCertificates()[0];

}

public static void print_key(String addr) throws FileNotFoundException, IOException, GeneralSecurityException {

//X509Certificate publicKey = readSignatureBlock(new FileInputStream(addr));
X509Certificate publicKey = readSignatureBlock(getX509InputStream(addr));
System.out.println("issuer:" + publicKey.getIssuerDN());

System.out.println("subject:" + publicKey.getSubjectDN());

System.out.println(publicKey.getPublicKey());

}
private static InputStream getX509InputStream(String apkPath) {
InputStream inputStream = null;
//InputStream xmlInputStream = null;
FileInputStream fstream = null;
ZipFile zipFile = null;
try {
zipFile = new ZipFile(apkPath);
//ZipEntry zipEntry = new ZipEntry("\META-INF\CERT.RSA");//就是这里的问题,我想要读取META-INF文件夹里的CERT.RSA文件,但是这样无法读取到
ZipEntry zipEntry = new ZipEntry("META-INF/");
inputStream = zipFile.getInputStream(zipEntry);
} catch (IOException e) {
e.printStackTrace();
try {
inputStream.close();
fstream.close();
zipFile.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
return inputStream;
}
}

2个回答

wtjrenranwtj
wtjrenranwtj   2016.02.24 09:59
已采纳
 public static void main(String[] args) {
        try {
            Enumeration<URL> urls = X509Util.class.getClassLoader().getResources("META-INF/services/java.nio.file.spi.FileSystemProvider");
            // 你的应该写成 "META-INF/CERT.RSA",注意META前不要有'/'
            while (urls.hasMoreElements()) {
                URL url = urls.nextElement();
                InputStream in = url.openStream();

                BufferedReader br = new BufferedReader(new InputStreamReader(in, "utf-8"));
                System.out.println(br.readLine());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
class_brick
class_brick   2016.02.23 17:26

需要解答的地方写在代码注释里了,请大神帮忙看看

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java 读取ZIP和RAR压缩包的目录结构
java ZIP和RAR 压缩包 目录结构。 1.ant.jar 解决java自带zip不能读取中文压缩包的问题; 2.需要安装WINRAR软件,以便解压rar文件,然后获取对应目录; 3.实现在线预览压缩包目录结构的功能;
java解析压缩文件.zip,获取文件夹下的数据
/**  * 数据包Controller  * @author cookie  * @version 2017-08-23  */ public class BudgetDateController extends BaseController {             /**      * 生成数据包      * @param budgetDatabase   
ZIP解压缩文件的工具类【支持多级目录|全】
ZIP解压缩文件的工具类【支持多级目录|全】 作者:Vashon 网上有很多的加压缩示例代码,但是都只是支持一级目录的操作,如果存在多级目录的话就不行了。本解压缩工具类经过多次检查及重构,最终分享给大家。 为了不让借鉴者偷懒,本人只将具体实现的方法代码贴上。 压缩操作: 1.支持多级目录压缩,具体实现方法如下: public static void zipFiles(S
JAVA压缩文件夹包括里面的文件,可以设置压缩后的目录结构
package test.downloadzip;/*  * 在进行压缩流操作时建议使用开源的类库org.apache.tools.zip.*,  * 不要用java.util.zip.*类库,这个在实现上没有前面那个做的完善。  */import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream...
java创建压缩文件方法(包括文件夹下包含文件夹)
最近需要用到Java的zip文件压缩与解压缩,找了一堆的资料和参考代码,没有一个能够很好的解决问题。要不就是压缩出错,要不就是压缩后的文件目录组织不正确,要不就是中文乱码,总之问题一大堆。没办法只能自己编码搞定。 java里面有个包叫java.util.zip提供zip文件压缩,但是编码的时候非常不方便。编码量太多了,通过搜索,发现apache有个包提供一些简单的方法来实现zip文件的压缩与解压
java直接读取.zip压缩文件(一)
java不解压直接读取.zip压缩文件该示例的,关于下面演示的项目源代下载地址如下: 源代码下载地址package com.sd.test.readzip;import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOExcept
Java压缩指定目录(包括目录下的子目录和文件)成zip文件
直接上示例: import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Date; import
JAVA读取zip文件 JAVA读取压缩文件 解压zip里面的指定格式文件
在网上查看了很多例子,结果很是失望,于是决定自己写一个例子,供给大家参考学习; 废话就不多说了直接看例子: package com.em.test.client; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.i
java 处理zip压缩/解压 文件/目录
环境操作系统: win7 java: jdk7需求需要把多个jar进行打包,方便上传。步骤这里我们需要用到的java api有:ZipOutputStream、ZipEntry。单个文件的压缩 public static void main(String[] args) { //C:\\Users\\yutao\\Desktop\\pageage String
使用shell脚本压缩当前目录下的文件夹
注意:把下面的脚本保存起来的时候,要注意是否是DOS格式的, 即每一行的行尾以\r\n来标识, 使用vim编辑器打开脚本,按下shift+: 运行:set ff可以看到DOS或UNIX的字样. 使用:set ff=unix把它强制为unix格式的, 然后存盘退出, 即可,否则会报错:/bin/bash^M: bad interpreter: No such file or directory,一定要