27

内部ストレージのファイルを特定のフォルダに保存したい。私のコードは次のとおりです。

File mediaDir = new File("media");
if (!mediaDir.exists()){
   mediaDir.createNewFile();
   mediaDir.mkdir();

}
File f = new File(getLocalPath());
f.createNewFile();
FileOutputStream fos = new FileOutputStream(f);
fos.write(data);
fos.close();

getLocalPath戻ります/data/data/myPackage/files/media/qmhUZU.jpgが、メディア フォルダーを作成しようとすると、「java.io.IOException: Read-only file system」という例外が発生します。フォルダーメディアの内部電話ストレージにファイルを書き込む方法はありますか? ありがとう。

4

5 に答える 5

23

次のようにContextWrapperを使用する必要があります。

ContextWrapper cw = new ContextWrapper(context);
File directory = cw.getDir("media", Context.MODE_PRIVATE);

いつものように、ドキュメントを参照してください。ContextWrapperには多くの機能があります。

于 2011-02-16T15:07:44.693 に答える
2

私もまったく同じエラーが発生していました。これが修正です。書き込み先を指定すると、Android は自動的にパスを/data/またはに解決します/mnt/sdcard/。説明させてください。

次のステートメントを実行すると:

File resolveMe = new File("/data/myPackage/files/media/qmhUZU.jpg");
resolveMe.createNewFile();

/data/Android の上位にあるルートへのパスを解決します。

次のコードを実行した後/mnt/、自分で何も翻訳しなくても自動的にルートに配置されたため、これを理解しました。

File resolveMeSDCard = new File("/sdcard/myPackage/files/media/qmhUZU.jpg");
resolveMeSDCard.createNewFile();

簡単な修正は、次のコードを変更することです。

File f = new File(getLocalPath().replace("/data/data/", "/"));

お役に立てれば

于 2011-08-10T18:19:47.097 に答える
2

media戻り値に追加されたディレクトリを作成する必要がありgetLocalPath()ます。

于 2011-02-16T14:02:14.317 に答える
-3

こんにちは、これを試してみてください。ディレクトリとその中にファイルが作成されます

File mediaDir = new File("/sdcard/download/media");
if (!mediaDir.exists()){
    mediaDir.mkdir();
}

File resolveMeSDCard = new File("/sdcard/download/media/hello_file.txt");
resolveMeSDCard.createNewFile();
FileOutputStream fos = new FileOutputStream(resolveMeSDCard);
fos.write(string.getBytes());
fos.close();

System.out.println("Your file has been written");  
于 2012-04-19T23:53:47.577 に答える