やりたい事は、apkにテキストファイルを含めて、インストール時にfilesフォルダに配置したかったのですが、
日本Androidの会 apkにファイルを含めるによると、直接filesフォルダに展開することはムリっぽいです。
かわりにres/rawにテキストファイルを含めて、初回起動時にfilesフォルダにコピーする方法が紹介されていました。
res/raw/test.txtをfilesフォルダにコピーします。
初回起動時はfiles/test.txtが存在しない場合としました。
package my.study.android; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import android.app.Activity; import android.content.res.Resources; import android.os.Bundle; public class MainActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //レイアウトの読み込み this.setContentView(R.layout.main); //filesフォルダにtest.txtが存在しなければ、res/raw/test.txtをコピーする。 File file = this.getFileStreamPath("test.txt"); if ( file.exists() == false ) { Resources res = this.getResources(); try { fileCopy(res.openRawResource(R.raw.test),openFileOutput(file.getName(),MODE_PRIVATE)); } catch (IOException e) { e.printStackTrace(); } } } private void fileCopy(InputStream is , OutputStream os )throws IOException{ BufferedReader br = null; BufferedWriter bw = null; try { br = new BufferedReader(new InputStreamReader(is)); bw = new BufferedWriter(new OutputStreamWriter(os)); String str; while((str = br.readLine()) != null){ bw.append(str +"\n"); } bw.flush(); } finally { if (br != null) br.close(); if (bw != null)bw.close(); } } }
0 件のコメント:
コメントを投稿