在Android中,是否有必要循环访问zip中的所有文件/目录以从已知位置的文件中读取内容?

时间:2014-06-24 13:45:49

标签: java android file file-io zip

我想读取zip文件中文件的第一行。 现在我使用while循环这样做sample stackoverflow quesion link

但我知道该zip文件的确切位置。而zip文件非常大(可以超过500mb)。

所以我想有一种方法可以在不使用while。

循环遍历所有文件的情况下读取该文件

1 个答案:

答案 0 :(得分:0)

使用ZipFile代替ZipInputStream。这将读取zip文件的中央目录(请参阅Wikipedia article),而不是整个文件。然后,您可以使用entries()getEntry(java.lang.String)getInputStream(java.util.zip.ZipEntry)获取条目的输入流:

String entryName = // put name of your entry here
File file = // put your zip file here
ZipFile zipFile = null;
try {
    zipFile = ZipFile(file);
    ZipEntry zipEntry = zipFile.getEntry(entryName);
    InputStream is = null;
    try {
        is = zipFile.getInputStream(zipEntry);
        // read stream here e.g. using BufferedReader
    } catch (IOException ex) {
        // TODO: handle exception or delete catch block
    } finally {
        if (is != null) {
            try {
                is.close();
            } catch (IOException ex) {
            }
        }
    }
} finally {
    if (zipFile != null) {
        zipFile.close();
    }
}