SDやdata、downloadなど各種ディレクトリパスの取得方法

SDカードのデータ領域

File Environment.getExternalStorageDirectory()

例: /sdcard

端末内のアプリキャッシュ領域

File getCacheDir()

例: /data/data/com.example.test/cache

端末内のデータ領域

File Environment.getDataDirectory()

例: /data/

Download Cache

File Environment.getDownloadCacheDirectory()

例: /cache

rootディレクトリ

File Environment.getRootDirectory ()

一時ファイル

一時ファイルではファイルの削除がOS任せになるため、ファイルがどこに生成されるか、いつ削除されるかを知る必要がはありません。

File File.createTempFile(String prefix, String suffix)

指定された接頭辞と接尾辞をファイル名の生成に使用して、デフォルトの一時ファイルディレクトリに空のファイルを生成します。

File File.createTempFile(String prefix, String suffix, File directory)

指定されたディレクトリで新しい空のファイルを生成し、その名前には、指定された接頭辞および接尾辞の文字列が使用されます。

OSの一時ファイルディレクトリに空のtesttmp.txtを生成する場合

File tempFile = File.createTempFile("testtmp", ".txt");

このファイルのパスを知るには

String tempPath = tempFile.getAbsolutePath();

または

String tempPath = tempFile.getPath();

SDカードのデータ領域にアプリのデータを保存するとき

SDカードにデータを書き込むにはAndroidManifest.xmlの<manifest>にパーミッション設定が必要です。

[参考記事] AndroidManifest.xml の permission一覧

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

SDカードのデータ領域にアプリのデータを保存するときは、アプリ名のサブフォルダに保存するのが一般的です。
アプリ名とはapp_nameのことではなくpackageのことでcom.example.testのような名称です。
これを得るには

getPackageName()

を使用します。

またこのフォルダは最初には作成されていないので、フォルダの作成が必要です。
そのファイルのパスまでディレクトリを作成するには次のようにします。

file.getParentFile().mkdir();

SDカードはリムーバブルメディアなので端末に刺さっていない場合があります。
SDカードの状態を知るにはステータスを利用します。

String Environment.getExternalStorageState();

マウントされているかどうかはEnvironment.MEDIA_MOUNTEDで得ます。

String mediaStatus = Environment.getExternalStorageState();
if(mediaStatus.equals(Environment.MEDIA_MOUNTED)){
// SDカードがマウントされてない
}else{
// SDカードがマウントされている
}

ファイル型(File)のファイルパスを文字列型(String)に変換する

file.getPath()

絶対パスを得るには

file.getAbsolutePath();

スポンサーリンク

関連記事

スポンサーリンク

REVOKE 権限を剥奪する

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る