assetsフォルダ
assetsフォルダはAndroid Studioではデフォルトで作成されていませんでした。
そのため
app→New→Folder→Assets Folderを選択します。
Finishを選択します。
「assets」フォルダが作成されています。
作成済みのデータベースファイルを右クリックして「コピー」を選択してコピー状態にします。
「Paste」を選択して貼り付けます。
「OK」を選択します。
このようにtest.dbがassetsフォルダに登録されます。
このサンプルではtest.txtも登録してみました(同じ手順で登録できます)。
Assetsフォルダ内のテキストファイルを読み込みます。
import android.content.Context;
import android.util.Log;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class clsAssets {
public void readFileInAssts(Context context, int iResourceId)
{
//変数宣言
InputStream stream = null;
BufferedReader reader = null;
String sFileName = "";
String buffer = "";
//リソースIDから文字列を取得します。
Log.d("readFileInAssts","リソースIDから文字列を取得");
sFileName = context.getString(iResourceId);
Log.d("sFileName",sFileName);
try
{
//test.txtを読み込む準備をします。
Log.d("readFileInAssts","test.txtを読み込む準備");
stream = context.getAssets().open(sFileName);
//ストリームを読み込んでバッファに格納します。
Log.d("readFileInAssts","バッファに格納");
reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
Log.d("readFileInAssts","while start");
while ((buffer = reader.readLine()) != null)
{
//読み込んだデータを順次StringBufferに格納します。
Log.d("テキストの内容", buffer);
}
Log.d("readFileInAssts","while end");
}
catch (Exception e)
{
Log.d("error",e.getMessage().toString());
return;
}
finally
{
reader = null;
stream = null;
}
//出力例
/*
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: package com.example.test.test;
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: import android.animation.AnimatorSet;
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: import android.animation.ObjectAnimator;
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: import android.content.Intent;
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: import android.database.SQLException;
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: import android.database.sqlite.SQLiteDatabase;
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: import android.graphics.Color;
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: import android.os.StrictMode;
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: import android.support.v7.app.AppCompatActivity;
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: import android.os.Bundle;
*/
}
}
|
getAssetsメソッドを使用して場所を特定します。
(例)
stream = context.getAssets().open(sFileName);
あとはストリームとして取得した内容を必要に応じてバッファに格納しwhileなどで順次読み取ります。
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
readFile();
}
private void readFile()
{
clsAssets cls = new clsAssets();
//strings.xmlに次のように定義しています。
//ex.)
//<string name="con_file1">test.txt</string>
cls.readFileInAssts(this, R.string.con_file1);
}
}
|
実行結果の例
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: package com.example.test.test;
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: import android.animation.AnimatorSet;
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: import android.animation.ObjectAnimator;
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: import android.content.Intent;
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: import android.database.SQLException;
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: import android.database.sqlite.SQLiteDatabase;
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: import android.graphics.Color;
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: import android.os.StrictMode;
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: import android.support.v7.app.AppCompatActivity;
10-11 23:24:24.340 5080-5080/test.example.com.test25 D/テキストの内容: import android.os.Bundle;
|
|