1. ホーム
  2. android

[解決済み] SDカードに自動的にディレクトリを作成する方法

2022-04-13 04:12:57

質問

ファイルを次の場所に保存しようとしています。

FileOutputStream fos = new FileOutputStream("/sdcard/Wallpaper/"+fileName); という例外が発生します。 java.io.FileNotFoundException

しかし、パスを "/sdcard/" は動作します。

今、私はこの方法で自動的にディレクトリを作成することができないことを仮定しています。

を作成する方法を教えてください。 directory and sub-directory を使用していますか?

解決方法は?

を作成した場合 ファイル オブジェクトを呼び出すと、トップレベルのディレクトリをラップしている mkdirs() メソッドを使って、必要なディレクトリをすべて構築します。のようなものです。

// create a File object for the parent directory
File wallpaperDirectory = new File("/sdcard/Wallpaper/");
// have the object build the directory structure, if needed.
wallpaperDirectory.mkdirs();
// create a File object for the output file
File outputFile = new File(wallpaperDirectory, filename);
// now attach the OutputStream to the file object, instead of a String representation
FileOutputStream fos = new FileOutputStream(outputFile);

を使用するのが賢明かもしれません。 環境.getExternalStorageDirectory() は、SD カード以外のものを搭載した携帯電話 (iPhone のような内蔵フラッシュなど) が登場した場合に、SD カードディレクトリが変更される可能性があるためです。いずれにせよ、SDカードが取り外されている可能性があるため、実際にそこにあることを確認する必要があることを覚えておく必要があります。

UPDATE API Level 4 (1.6)からは、パーミッションも要求する必要があります。このようなもの(マニフェスト内)が機能するはずです。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />