以下のようなソースコードでテキストファイルを読み込もうと思っております。
この場合は、単純に「test.txt」を読むことになりますが、このtest.txtはどこにおくといいのでしょうか?
またSDカード内においているテキストファイルのパスを書くとそこまでアクセスできるようになるでしょうか?テキストファイルへのパスの例を教えてください。
僕の想像)
/sdcard/test.txt
FileInputStream fis = null;
BufferedReader in = null;
EditText editText = (EditText)findViewById(R.id.myEditText);
// ファイルの読込
try {
fis = this.openFileInput("test.txt");
in = new BufferedReader(new InputStreamReader(fis));
editText.setText(in.readLine());
} catch (IOException e) {
e.printStackTrace();
}finally {
if(in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
android.os.Environment クラスの、getExternalStorageDirectory() メソッドを取得して使うと良いらしいです。
SDカードのディレクトリパスはandroid.os.Environment.getExternalStorageDirectory().getPath()で取得します。直接/mnt/sdcardを指定してもファイルの読み書きはできますが機種によりSDカードのマウント先ディレクトリ名が違うためgetExternalStorageDirectory()メソッドを使うほうが良いです。
http://www.ipentec.com/document/document.aspx?page=android-read-write-sd-card-file
後、SDカードが挿入されているかどうかのチェックも。
でSDカードがマウントされているディレクトリの位置が取れる。
そもそもSDカードがマウントされているかどうかはEnvironment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
がtrueになるかどうかで判定できる。
http://d.hatena.ne.jp/shokai/20100602/1275431637
一応、android.os.Environment#getExternalStorageDirectory() のマニュアルも。
http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory%28%29
戻り値が File なので、File#getPath() して、文字列としてファイルパスを加工しても良いし、File(File parent, String child) で、File インスタンスとして扱っても良いし。
やってみました。Eclipseで実行すると読みに行くSDカードの場所がエミュレータ上のものになるようですので、ここは設定で変えられると思いましたのでやってみたいと思います。
そのコードで良いと思います。
openFileInput/openFileOutputでパス名を指定しないと、ローカルファイルといって、OSがアプリ毎にパスを決定するので、そのまま読み書きができます。
http://android.roof-balcony.com/shori/strage/localfile-2/
SDカードのパスは Android API を使って取得することが出来ます。
詳しい手順は下記をご覧下さい。
http://inujirushi123.blog.fc2.com/blog-entry-30.html
ありがとうございました。参考にさせていただきます!
ありがとうございました。
2013/09/03 14:41:24