将zip写入内部存储 - 下载完成后文件不存在

时间:2013-01-20 06:16:41

标签: android

我使用a tutorial将zip下载到应用程序内部存储的子目录中。我把zip写到/data/data/my.package.name/files/mySubDirectory/the.zip

但是,当我检查拉链是否存在时,它不会:

    String fileDirectory = this.getFilesDir().getAbsolutePath() + "/mySubDirectory/the.zip";
    File file = new File(fileDirectory);
    if(file.exists()) {
        Log.e(this.class.getName(), "file exists");
    } else {
        Log.e(this.class.getName(), "file doesn't exist");
    }

我确认fileDirectoryFile outFile的{​​{1}}路径相同。

可能是什么问题?

3 个答案:

答案 0 :(得分:0)

尝试使用getFilesDir()+“/”子目录+“/”“the.zip” 没有getabsolutepath()。 这就是我用过的问题。

好吧,也许您的问题是权限,您是否在数据/数据/包/文件下的DDMS中看到了该文件?检查文件的权限

这是我的代码

         String path = getFilesDir() + "/"
            + subDirName + "/";
            File file = new File(path);
            file.mkdirs();
            setReadable(file);

我使用以下内容使文件可读

            @TargetApi(9)
            private void setReadable(File file) {
                    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
                            try {
                                    Runtime.getRuntime().exec(
                                                    "chmod 777 " + file.getCanonicalPath());
                            } catch (IOException e1) {
                                    e1.printStackTrace();
                            }
                    } else {
                            file.setReadable(true, false);
                    }
            }
            }   

答案 1 :(得分:0)

尝试获取以下文件路径:

 String fileDirectory=Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "data" + File.separator + "data" + File.separator+ getActivity().getPackageName()+ File.separator +"mySubDirectory"+File.separator+"the.zip";

答案 2 :(得分:0)

使用this SO question,我使用此示例创建了一个子目录:

File mydir = context.getDir("mydir", Context.MODE_PRIVATE); //Creating an internal dir;
File fileWithinMyDir = new File(mydir, "myfile"); //Getting a file within the dir.
FileOutputStream out = new FileOutputStream(fileWithinMyDir); //Use the stream as usual to write into the file

问题是我没想到子目录会以“app_”为前缀,所以我在错误的位置寻找zip。