FC2ブログ
ヽ|∵|ゝ(Fantom) の 開発blog? ホーム » Android »【Android】【Java】SDカードにテキストファイルを保存する

【Android】【Java】SDカードにテキストファイルを保存する  


 保存もついでなので簡単なものを書いて置く。前回の「SDカードからテキストファイルを読み込む」のテスト用に使っても良いだろう。エミュレータ起動中なら DDMS を使っても確認することもできる。

 考え方は、「内部ストレージにテキストファイルを保存する」とほぼ変わらない。

 saveText() は以前定義したものをそのまま使えば良い。

 isMountSDCard(), toSDCardAbsolutePath() も前回のものをそのまま使う。
(※) Android4.4(API 19)あたりから内部ストレージの仮想パスに変わった模様

 また書き込みの場合は、マニフェストファイル(AndroidManifest.xml) に以下のパーミッションが必要になる。

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

//設定値
private static final String DEFAULT_ENCORDING = "UTF-8"; //デフォルトのエンコード

//出力ストリームにてテキストを保存(汎用)
public static final void saveText(OutputStream outputStream, String text, String charsetName)
throws IOException, UnsupportedEncodingException {
BufferedOutputStream bos = null;
try {
bos = new BufferedOutputStream(outputStream);
bos.write(text.getBytes(charsetName)); //すべての byte[] を取得
bos.flush();
} finally {
try {
bos.close();
} catch (Exception e) {
//IOException
}
}
}


// SDCard のマウント状態をチェックする(Android 用)
public static final boolean isMountSDCard() {
final String state = Environment.getExternalStorageState();
if (state.equals(Environment.MEDIA_MOUNTED)) {
return true; //マウントされている
} else {
return false; //マウントされていない
}
}

// SDCard のルートディレクトリを取得(Android 用)
public static final File getSDCardDir() {
return Environment.getExternalStorageDirectory();
}

// SDCard 内の絶対パスに変換(Android 用)
public static final String toSDCardAbsolutePath(String fileName) {
return getSDCardDir().getAbsolutePath() + File.separator + fileName;
}


//SDCard に、テキストファイルを保存する
//<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> が必要。
public static final void saveTextSDCard(String fileName, String text) throws IOException {
if (!isMountSDCard()) {
throw new IOException("No Mount");
}
OutputStream os = new FileOutputStream(toSDCardAbsolutePath(fileName));
saveText(os, text, DEFAULT_ENCORDING);
}

//メインでは... (※例外処理は省略)
String fileName = "sample.txt"; // "mnt/sdcard/sample.txt" or "sdcard/sample.txt" 等に保存される(端末による)
String text = "保存する文字列";
saveTextSDCard(fileName, text);
//ファイルが保存されていれば成功(エミュレータならDDMSで確認できる)

 文字エンコーディングは読み込みに合わせて "UTF-8" にした方が良いだろう。他のものにしたいなら、ストリームに渡す前に変更してやれば良い。

 実機での確認は、「マイファイル」のようなアプリで簡単に覗くことができる(アプリは端末による)。

 前回流用の isMountSDCard() では、SDカードのマウント状態だけしかチェックしてないので、必要なら MOUNTED_READ_ONLY (読み取り専用) などもチェックした方が良いかも知れない。その辺は外部ストレージの状態を参考にして、色々付け加えると良いだろう。マウントはあくまで最低限の条件である。

 テキストファイルの読み込みや保存をまとめたページは→こちら


(関連記事)
【Android】SDカードからテキストファイルを読み込む
【Android】エラーをSDカードに書き出す
【Android】SDカードから画像ファイルを読み込む
【Android】SDカードに画像ファイルを保存する(png)
【Android】SDカードに画像ファイルを保存する(jpg)
【Android】SDカードのファイルを削除する
【Android】内部ストレージにテキストファイルを保存する
【Android】【Applet】【Java】テキストファイルの読み込み・保存 まとめ
【Android】Preference 機能を使ってデータを読み込み・保存する



関連記事
スポンサーサイト



category: Android

thread: プログラミング

janre: コンピュータ

tag: テキストファイル保存  SDカード 
tb: 0   cm: --


トラックバック

トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/124-0eb1fa94
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

Social

検索フォーム

全記事一覧

カテゴリ

ユーザータグ

最新記事

リンク

PR