gpt4 book ai didi

java - 从 SD 卡解压文件

转载 作者:行者123 更新时间:2023-11-30 02:16:30 26 4
gpt4 key购买 nike

我正在尝试使用下面的代码从 sdcard 中解压一个文件

public void unzip(String zipFilePath, String destDirectory, String filename) throws IOException {

File destDir = new File(destDirectory);
ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath));
ZipEntry entry = zipIn.getNextEntry();
// iterates over entries in the zip file
while (entry != null) {
String filePath = destDirectory + File.separator + entry.getName();

if (!entry.isDirectory()) {
// if the entry is a file, extracts it
extractFile(zipIn, filePath);
} else {
// if the entry is a directory, make the directory ;
File dir = new File(filename);
dir.mkdir();
}
zipIn.closeEntry();
entry = zipIn.getNextEntry();
}
zipIn.close();
}
/**
* Extracts a zip entry (file entry)
* @param zipIn
* @param filePath
* @throws IOException
*/
private void extractFile(ZipInputStream zipIn, String filePath) throws IOException {
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
byte[] bytesIn = new byte[BUFFER_SIZE];
int read = 0;
while ((read = zipIn.read(bytesIn)) != -1) {
bos.write(bytesIn, 0, read);
}
bos.close();
}

上面的代码给我错误。下面是日志

java.io.FileNotFoundException: /mnt/sdcard/unZipedFiles/myfile/tt/images.jpg: open failed: ENOENT (No such file or directory)  

这里我压缩了包含图像/子目录的目录,然后我尝试解压缩。

谁能告诉我原因

谢谢

最佳答案

您正在尝试将文件写入不存在的目录。这是行不通的。解压缩时不仅需要创建文件,还需要创建目录

将以下内容添加到 extractPath() 作为开始行:

filePath.getParentFile().mkdirs();

这会获取应包含所需文件的目录 (filePath.getParentFile()),然后创建所有必要的子目录以到达那里 (mkdirs())。

关于java - 从 SD 卡解压文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29253824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com