java - Android解压不是目录问题

标签 java android

我正在尝试解压缩存储在原始文件夹中的 zip 文件。代码如下

try
{
    File myDir = new File(getFilesDir().getAbsolutePath());
    File newFile = new File(myDir + "/imageFolder");

if(!newFile.exists())
                    {
                        newFile.mkdir();
                    }

    ZipInputStream zipIs = new ZipInputStream(con
            .getResources().openRawResource(R.raw.images));
    ZipEntry ze = null;

    while ((ze = zipIs.getNextEntry()) != null)
    {

        Log.v("Name", ze.getName());
        Log.v("Size", "" + ze.getSize());

        if(ze.getSize() >0)
        {
            FileOutputStream fout = new FileOutputStream(newFile
                    + "/" + ze.getName());                      

            byte[] buffer = new byte[1024];
            int length = 0;

            while ((length = zipIs.read(buffer)) > 0)
            {
                fout.write(buffer, 0, length);
            }
            zipIs.closeEntry();
            fout.close();
        }   
        }

    zipIs.close();

} catch (Exception e)
{
    e.printStackTrace();
}

但我一直收到这个错误

01-18 11:24:28.301: W/System.err(2285): java.io.FileNotFoundException: /data/data/com.example.ziptests/files/imageFolder/TestImages/background.png (Not a directory)

我完全不知道为什么会导致这种情况,它找到了文件,但是当要写出它们时,它会出现那个错误。最初我发现一个问题是由 zip 文件在 mac 上压缩引起的,所以我在我的 windows 机器上压缩文件,这解决了一个问题(当你在 mac 上压缩时,它会添加这些额外的文件夹和诸如 store.ds 之类的文件,在尝试解压缩时会导致错误),但这不是目录错误不断出现。

知道为什么会这样吗?

最佳答案

请尝试以下链接代码解压 zip 文件。

解压缩 Zip 文件的代码

Unzip Zip File

问题是我正在上传不是使用 winrar 软件制作的 zip 文件,所以它没有正确解压缩并给我错误。

它将解决您的问题。

关于java - Android解压不是目录问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14397916/

相关文章:

java - 使用 MockMvc junuit 测试获取错误状态错误响应

java - CloudFoundry 中的应用程序失败并出现 OutOfMemoryError

java - 实现 VFS 的想法

java - 从上下文菜单获取项目 ID

java - Android getLayoutInflater().inflate 详解

java - Java中如何调用匿名类方法

android - 场景与 fragment 和 View

android - 警告 : warning: Supported source version 'RELEASE_7' from annotation processor 'android.arch.lifecycle.LifecycleProcessor' less than -source '1.8'

android - 无法使用最新的gradle版本制作android项目

java - Finalize 方法中的位图回收无法正常工作