2011年5月17日火曜日

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

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

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


  1. // SDのパス設定  
  2.      String filePath = Environment.getExternalStorageDirectory().getPath() + "/" + SD_FOLDER + "/" + SD_FILE ;  
  3.      // 時刻取得  
  4.      Calendar calendar = Calendar.getInstance();  
  5.      // yyyyMMddhhmmssファイル名.txtになるようにする  
  6.      filePath = filePath + calendar.get(Calendar.YEAR) + (calendar.get(Calendar.MONTH) + 1) + calendar.get(Calendar.DAY_OF_MONTH) + "_"    
  7.          + calendar.get(Calendar.HOUR_OF_DAY) +  calendar.get(Calendar.MINUTE) +  calendar.get(Calendar.SECOND) + FILE_TYPE;  
  8.   
  9.      // ファイル生成  
  10.      File file = new File(filePath);  
  11.      // ディレクトリ生成  
  12.         file.getParentFile().mkdir();   

そうそう、SDカードを使用するにはパーミッションが必要です。
以下のコードをAndroidmanifest.xmlに追記してください。
  1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>  

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

  1. FileOutputStream outputstream;  
  2.         try {  
  3.          outputstream = new FileOutputStream(file, true);  
  4.             OutputStreamWriter streamWriter = new OutputStreamWriter(outputstream, "UTF-8");  
  5.             BufferedWriter bufferedWriter = new BufferedWriter(streamWriter);  
  6.             String writeText = ((EditText) findViewById(R.id.inputText)).getText().toString();  
  7.             // 書き込み  
  8.             bufferedWriter.write(writeText);  
  9.             bufferedWriter.flush();  
  10.             bufferedWriter.close();  
  11.             Toast.makeText(this, filePath.toString() + " に保存しました。", Toast.LENGTH_LONG).show();  
  12.            
  13.         } catch (Exception e) {  
  14.          // 書き込み失敗などの例外  
  15.          Toast.makeText(this"書き込み失敗", Toast.LENGTH_LONG).show();  
  16.            
  17.         }  

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

0 件のコメント:

コメントを投稿