首先,我已经多次搜索并搜索了大量的Stackoverflow页面,但我无法正常工作。我想要做的是我有一个像以下结构的zip文件:
zipfile.zip
文件夹
Subfolder1
带空格的子文件夹(大约100个,但不知道这些数量)
带空格的子子文件夹
一些文件
SubSubFolderWithoutSpaces
更多文件
Subfolder2
带空格的子文件夹(大约100个,但不知道这些数量)
带空格的子子文件夹
一些文件
SubSubFolderWithoutSpaces
更多文件
Subfolder3
带空格的子文件夹(大约100个,但不知道这些数量)
带空格的子子文件夹
一些文件
SubSubFolderWithoutSpaces
更多文件
Subfolder4
带空格的子文件夹(大约100个,但不知道这些数量)
带空格的子子文件夹
一些文件
SubSubFolderWithoutSpaces
更多文件
我目前正在使用http://www.jondev.net/articles/Unzipping_Files_with_Android_%28Programmatically%29中的代码来尝试解压缩文件,但它所做的只是创建一个名为zipfile的目录,然后在其中有一个名为folder的子目录,该目录在目录中没有任何内容显然不应该发生。
非常感谢任何帮助。
更新: 哦,万一你想知道我有WRITE_EXTERNAL_STORAGE_PERMISSION。
答案 0 :(得分:5)
我希望这可以帮到你:
private boolean unzipPack(InputStream stream) {
FileOutputStream out;
byte buf[] = new byte[16384];
try {
ZipInputStream zis = new ZipInputStream(stream);
ZipEntry entry = zis.getNextEntry();
while (entry != null) {
if (entry.isDirectory()) {
File newDir = new File(rootDirectory + entry.getName());
newDir.mkdir();
} else {
String name = entry.getName();
File outputFile = new File(rootDirectory + name);
String outputPath = outputFile.getCanonicalPath();
name = outputPath
.substring(outputPath.lastIndexOf("/") + 1);
outputPath = outputPath.substring(0, outputPath
.lastIndexOf("/"));
File outputDir = new File(outputPath);
outputDir.mkdirs();
outputFile = new File(outputPath, name);
outputFile.createNewFile();
out = new FileOutputStream(outputFile);
int numread = 0;
do {
numread = zis.read(buf);
if (numread <= 0) {
break;
} else {
out.write(buf, 0, numread);
}
} while (true);
out.close();
}
entry = zis.getNextEntry();
}
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
<强>参考强>:
android pico installer source