0

チュートリアルを使用して、アプリケーションの内部ストレージのサブディレクトリにzipをダウンロードしました。zipをに書き込みました/data/data/my.package.name/files/mySubDirectory/the.zip

しかし、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");
    }

fileDirectoryのと同じパスであることを確認しFile outFileましたFileOutputStream

何が問題なのですか?

4

3 に答える 3

0

getFilesDir()+"/"サブディレクトリ+"/""the.zip"をgetabsolutepath()なしで使用してみてください。それが私が使用したものが問題になる可能性があります。

OK多分あなたの問題はパーミッションにありますか?データ/データ/パッケージ/ファイルの下の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);
                    }
            }
            }   
于 2013-01-20T06:27:07.213 に答える
0

以下のようにファイルパスを取得してみてください。

 String fileDirectory=Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "data" + File.separator + "data" + File.separator+ getActivity().getPackageName()+ File.separator +"mySubDirectory"+File.separator+"the.zip";
于 2013-01-20T06:44:06.487 に答える
0

このSO質問を使用して、次の例を使用してサブディレクトリを作成しました。

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を探していたということです。

于 2013-01-20T06:53:37.437 に答える