2014年2月17日月曜日

ファイルの書き込み、生成(FileOutputStream, file:///data/data/)

ファイルの読み込みをやったので、今回はファイルの書き込みを。

//アウトプットストリームの生成
openFileOutput( ファイル名:String型, モード:int型)

こんな感じで使います。↓
FileOutputStream oOutStreame = openFileOutput( "test.htmk", MODE_PRIVATE );

モードの定数はこちら

MODE_WORLD_READABLE   他のアプリから参照可
MODE_WORLD_WRITEABLE  他のアプリから書き込み可
MODE_PRIVATE                他のアプリからアクセス不可
MODE_APPEND                  ファイルがあると、追記


また、モードを複数指定する場合には
パイプを繋げると複数指定できます。

MODE_PRIVATE | MODE_APPEND


また、ファイルの保存場所は

file:///data/data/" パッケージ名 + /files/ + 作成したファイル名

こちらになります。

SDカードに保存する方法に関しては、また今度


■サンプルソース
package com.example.filemgr;

import java.io.FileOutputStream;
import java.io.IOException;

import android.os.Bundle;
import android.app.Activity;
import android.webkit.WebView;
import android.widget.LinearLayout;

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  //ファイル名
  String sFileName  = "test.html";
  //書き込み内容
  String sText      = "<font color=\"red\">Goodbye World!!</font>";
  try {
           //アウトプットストリームの生成
    FileOutputStream oOutStreame = openFileOutput(sFileName, MODE_PRIVATE | MODE_APPEND);
//アウトプットストリームに書き込み
  oOutStreame.write(sText.getBytes());
  } catch (IOException e) {
  // TODO 自動生成された catch ブロック
e.printStackTrace();
  }
  //WebViewの生成
        WebView oWebView = new WebView( getApplicationContext() );
  //ファイルの保存先はこちらだ↓    "file:///data/data/パッケージ名 + files + 作成したファイル名

        String sUrl = "file:///data/data/" + getPackageName() +"/files/" + sFileName;oWebView.loadUrl( sUrl );
      
  //レイアウトの生成とテキストの貼り付け
        LinearLayout oLayout = new LinearLayout(getApplicationContext());
        oLayout.addView(oWebView);
        //レイアウトを表示
        setContentView(oLayout);
  }
}

■実行結果



今回は拡張子をhtmlにしましたが基本的には、何でも大丈夫です。
注意点としては、ファイルを書き込む際にフルパスを指定しないことです。


0 件のコメント:

コメントを投稿