やりたい事は、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 件のコメント:
コメントを投稿