Androidプログラムを組んでいます。


以下のようなソースコードでテキストファイルを読み込もうと思っております。
この場合は、単純に「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();
}
}
}

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/09/04 10:15:11
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

id:zachouR

ありがとうございました。

2013/09/03 14:41:24
id:a-kuma3 No.2

回答回数4974ベストアンサー獲得回数2154

ポイント33pt

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 インスタンスとして扱っても良いし。

id:zachouR

やってみました。Eclipseで実行すると読みに行くSDカードの場所がエミュレータ上のものになるようですので、ここは設定で変えられると思いましたのでやってみたいと思います。

2013/09/03 14:42:13
id:dawakaki No.3

回答回数797ベストアンサー獲得回数122

ポイント33pt

そのコードで良いと思います。
openFileInput/openFileOutputでパス名を指定しないと、ローカルファイルといって、OSがアプリ毎にパスを決定するので、そのまま読み書きができます。
http://android.roof-balcony.com/shori/strage/localfile-2/

SDカードのパスは Android API を使って取得することが出来ます。
詳しい手順は下記をご覧下さい。
http://inujirushi123.blog.fc2.com/blog-entry-30.html

id:zachouR

ありがとうございました。参考にさせていただきます!

2013/09/03 14:42:25

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません