【问题标题】:Android - Failed to Unzip FilesAndroid - 无法解压缩文件
【发布时间】:2013-05-17 13:39:18
【问题描述】:

我一直在使用this website 上的解压缩码。该代码应该可以完美运行,并且能够解压缩文件夹/子文件夹。

问题是当我运行代码时,它在 logcat 上给了我错误:

05-17 20:31:13.415: V/Decompress(27611): Unzipping files/pkey.txt
05-17 20:31:13.430: E/Decompress(27611): unzip
05-17 20:31:13.430: E/Decompress(27611): java.io.FileNotFoundException: /storage/sdcard0/unzipped/files/pkey.txt: open failed: ENOENT (No such file or directory)
05-17 20:31:13.430: E/Decompress(27611):    at libcore.io.IoBridge.open(IoBridge.java:416)
05-17 20:31:13.430: E/Decompress(27611):    at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
05-17 20:31:13.430: E/Decompress(27611):    at java.io.FileOutputStream.<init>(FileOutputStream.java:128)
05-17 20:31:13.430: E/Decompress(27611):    at java.io.FileOutputStream.<init>(FileOutputStream.java:117)
05-17 20:31:13.430: E/Decompress(27611):    at id.ac.petra.ta.DriveActivity$Decompress.unzip(DriveActivity.java:316)
05-17 20:31:13.430: E/Decompress(27611):    at id.ac.petra.ta.DriveActivity$DownloadFile.doInBackground(DriveActivity.java:371)
05-17 20:31:13.430: E/Decompress(27611):    at id.ac.petra.ta.DriveActivity$DownloadFile.doInBackground(DriveActivity.java:1)
05-17 20:31:13.430: E/Decompress(27611):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-17 20:31:13.430: E/Decompress(27611):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
05-17 20:31:13.430: E/Decompress(27611):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
05-17 20:31:13.430: E/Decompress(27611):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
05-17 20:31:13.430: E/Decompress(27611):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
05-17 20:31:13.430: E/Decompress(27611):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
05-17 20:31:13.430: E/Decompress(27611):    at java.lang.Thread.run(Thread.java:856)
05-17 20:31:13.430: E/Decompress(27611): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
05-17 20:31:13.430: E/Decompress(27611):    at libcore.io.Posix.open(Native Method)
05-17 20:31:13.430: E/Decompress(27611):    at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
05-17 20:31:13.430: E/Decompress(27611):    at libcore.io.IoBridge.open(IoBridge.java:400)
05-17 20:31:13.430: E/Decompress(27611):    ... 13 more

有人知道这是怎么回事吗? 请帮忙。

【问题讨论】:

  • 看来那个文件不存在...
  • 可能解压/文件没有退出
  • 没错!!这就是解压缩不起作用的原因。但我只是不知道为什么它适用于某些人(自动创建子文件夹),但不适用于我......
  • 你有写权限吗?
  • 是的,我有 WRITE_EXTERNAL_STORAGE 权限。但是我还是不明白为什么原来的代码对我不起作用,这需要我先添加父目录。

标签: java android file zip


【解决方案1】:

此错误的主要原因是文件夹/子文件夹(解压缩/文件)不存在。所以,添加这几行后问题就解决了:

java.io.File f = new java.io.File(_location + ze.getName());
f = new java.io.File(f.getParent());
f.mkdirs();

【讨论】:

  • 但是,我并不认为原始代码是错误的,因为它实际上适用于大多数人。另外,我不知道为什么原始代码不适合我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-02
  • 2017-05-24
  • 1970-01-01
  • 1970-01-01
  • 2012-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多