- Date: Sun 25 11 2012
- Category: Android
- Response: Comment 0 Trackback 0
デバイスにSDカードがマウントされているかチェックする(2)
以前書いた『デバイスにSDカードがマウントされているかチェックする』で
SDカードのマウント状態を確認にはLinuxのmountコマンドを使うと書きました。
Linuxのコマンドを直接使うのに抵抗があったので調べてみたところ /proc/mounts でシステムが使用中のマウント一覧が取得できるみたい。
※ 取得できる情報は Runtime.getRuntime().exec(String prog) で mount を実行したときと同じです
/proc/mounts については Red Hat Enterprise Linux 4: システム管理入門ガイド などを見てください。
で、せっかく調べたので /proc/mounts を使った場合のマウントチェックを作りました。
結果は変わりませんが、コードは若干短くなります。
SDカードのマウント状態を確認にはLinuxのmountコマンドを使うと書きました。
Linuxのコマンドを直接使うのに抵抗があったので調べてみたところ /proc/mounts でシステムが使用中のマウント一覧が取得できるみたい。
※ 取得できる情報は Runtime.getRuntime().exec(String prog) で mount を実行したときと同じです
/proc/mounts については Red Hat Enterprise Linux 4: システム管理入門ガイド などを見てください。
で、せっかく調べたので /proc/mounts を使った場合のマウントチェックを作りました。
結果は変わりませんが、コードは若干短くなります。
/**
* 指定されたパスがマウントされているかチェックする。
* USB接続で外部ストレージモードにしている場合などにはマウント扱いされずに false を返します。
*
* @param path
* マウントされているかチェックするパス
* @return true:マウントされている、false:マウントされていない
*/
public static boolean isMounted(String path) {
boolean isMounted = false;
Scanner scanner = null;
try {
// マウントポイントを取得する
File file = new File("/proc/mounts");
scanner = new Scanner(new FileInputStream(file));
// マウントポイントに該当するパスがあるかチェックする
while (scanner.hasNextLine()) {
if (scanner.nextLine().contains(path)) {
// 該当するパスがあるのでマウントされている
isMounted = true;
break;
}
}
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} finally {
if (scanner != null) {
scanner.close();
}
}
// マウント状態を返します
return isMounted;
}
スポンサーサイト