2011年5月17日火曜日

[Android]テキストデータをSDカードに保存する

今回のアプリではあまり使わない機能ですが、一応実装します。
SDカードにテキストボックス内のテキストを「.txt」形式にて保存する方法です。

まずはファイルパスの設定を行います。


// SDのパス設定
     String filePath = Environment.getExternalStorageDirectory().getPath() + "/" + SD_FOLDER + "/" + SD_FILE ;
     // 時刻取得
     Calendar calendar = Calendar.getInstance();
     // yyyyMMddhhmmssファイル名.txtになるようにする
     filePath = filePath + calendar.get(Calendar.YEAR) + (calendar.get(Calendar.MONTH) + 1) + calendar.get(Calendar.DAY_OF_MONTH) + "_"  
         + calendar.get(Calendar.HOUR_OF_DAY) +  calendar.get(Calendar.MINUTE) +  calendar.get(Calendar.SECOND) + FILE_TYPE;

     // ファイル生成
     File file = new File(filePath);
     // ディレクトリ生成
        file.getParentFile().mkdir(); 

そうそう、SDカードを使用するにはパーミッションが必要です。
以下のコードをAndroidmanifest.xmlに追記してください。


そしていよいよ書き込み。

FileOutputStream outputstream;
        try {
         outputstream = new FileOutputStream(file, true);
            OutputStreamWriter streamWriter = new OutputStreamWriter(outputstream, "UTF-8");
            BufferedWriter bufferedWriter = new BufferedWriter(streamWriter);
            String writeText = ((EditText) findViewById(R.id.inputText)).getText().toString();
            // 書き込み
            bufferedWriter.write(writeText);
            bufferedWriter.flush();
            bufferedWriter.close();
            Toast.makeText(this, filePath.toString() + " に保存しました。", Toast.LENGTH_LONG).show();
         
        } catch (Exception e) {
         // 書き込み失敗などの例外
         Toast.makeText(this, "書き込み失敗", Toast.LENGTH_LONG).show();
         
        }

画面にすると地味ですが、こんな感じになります。

0 件のコメント:

コメントを投稿