SD カードにテキストを保存したい

Android 端末のファイル操作について漠然とやりたいなぁということを書いた記事はこちら

やりたいこと「SDカードにテキストを保存したい」

流れはこんな感じでしょうか

  1. SD カードの状態を取得する
  2. SD カードのパスを取得する
  3. 作成するファイルを作成する
  4. テキストを書き込む
  5. 終了処理



SD カードの状態を取得する

final String state = Environment.getExternalStorageState();
SDカードがマウントされいなければ以降の処理ができません。
対応方法:ユーザにSDカードをマウントして!ってダイアログか何かでお願いする


        // SD カードのマウント状況
        if (!Environment.MEDIA_MOUNTED.equals(state)) {


            // SD カードがマウントされていない(取り外されている)ため
            // SD カードに対するファイル操作はできないため処理を終了します


            Log.w("File", "SDカードがマウントされていません");
            return;
        }


SDカードはマウントされているが読み込み専用になっている場合も以降の処理ができません。
対応方法:ユーザにSDカードが読み込み専用を解除して!ってダイアログか何かでお願いする


        if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {


            // SD カードが読み込み専用になっています
            // SD カードにファイルを作成、書き込み操作ができないため処理を終了します


            Log.w("File", "SDカードが読み込み専用になっています");
            return;
        }




SD カードのパスを取得する

        // SD カードのディレクトリを取得します
        final File extrernalStrageDirectory = Environment.getExternalStorageDirectory();



作成するファイルを作成する

        // 操作対象のファイルを作成
        final File file = new File(extrernalStrageDirectory, "/caldia/temp.txt");




        // ファイルの存在を確認します
        if (!file.exists()) {


            // ディレクトリを作成
            final boolean isMkDirs = file.mkdirs();


            if (!isMkDirs) {


                // ディレクトリ作成処理が失敗したため処理を終了します
                Log.w("File", "ファイル名 : " + file.getAbsolutePath() + " の作成が失敗しました");
                return;


            }
        }

テキストを書き込む


        // ファイル書き込み用ライターを作成します
        final FileWriter fileWriter = new FileWriter(file);


        // テキストを書き込みます
        fileWriter.write(text);


終了処理

        // ライターを閉じます
        fileWriter.close();


Eclipse の DDMS パースペクティブで SDカードの中を表示しました
ファイルが作成されています。
ダウンロードして中身を確認すれば成功したかどうかがわかりますね

0 件のコメント:

コメントを投稿