戌印-INUJIRUSHI- (Androidあれこれ)

Androidのプログラミングをメインにしてます。記事に貼られたソースコードはダブルクリックすることで行番号をはずしてコピーすることができます。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
10

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

デバイスにSDカードがマウントされているかチェックする(2)

以前書いた『デバイスにSDカードがマウントされているかチェックする』で
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;
}
スポンサーサイト

Comments

Leave a Comment


Body
プロフィール

とむ・やむくん

Author:とむ・やむくん
管理人について

Windows 7 / 64bit
Eclipse 4.2 Juno (日本語パッチ済)

スポンサーサイト
最新トラックバック
検索フォーム
ブロとも申請フォーム
QRコード
QR
Twitter
2013/01/04 19:00 カウント開始

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。