ファイルアクセスに挑戦! (6/7)
作成:2009-12-28 11:04
更新:2010-05-11 13:51
更新:2010-05-11 13:51
■FileReader/FileWriterを使うと?
が、「テキストの読み書きにFileInputStreamやFileOutuptStreamを使うのは気持ち悪い。FileReader/FileWriterは使えないのか」と思う人もいるかも知れません。そこで、先ほどの読み書き用メソッドを少し修正したものもあげておきましょう。
やっていることは先ほどの例と同じです。ここでは、openFileInput/openFileOutputメソッドの代りに、FileReaderやFileWriterのインスタンスを作成して読み書きをさせています。やっていうことは別に難しくないのですが、一つだけ注意しなければならない点があります。それは、アクセスするファイルのパスの取得です。
やっていることは先ほどの例と同じです。ここでは、openFileInput/openFileOutputメソッドの代りに、FileReaderやFileWriterのインスタンスを作成して読み書きをさせています。やっていうことは別に難しくないのですが、一つだけ注意しなければならない点があります。それは、アクセスするファイルのパスの取得です。
String path = "/data/data/" + this.getPackageName() + "/files/data.txt";こんな具合にしてパスを取得していますね? androidでは、プログラムがファイルを保存できる場所というのは、"/data/data/パッケージ名/files/"という場所でなければいけません。したがって、このような形でファイルのパスを用意してやる必要があるのです。この点さえきちんと理解すれば、androidでも、普通のjava.ioパッケージのクラスを使ったファイルアクセスはちゃんと行えるのです。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※SampleApp.javaの修正 public void saveText(String data) throws IOException{ String path = "/data/data/" + this.getPackageName() + "/files/data.txt"; FileWriter writer = new FileWriter(path); writer.write(data); writer.close(); } public void loadText() throws IOException{ String path = "/data/data/" + this.getPackageName() + "/files/data.txt"; FileReader reader = new FileReader(path); char[] buffer = new char[1000]; reader.read(buffer); edit.setText(new String(buffer).trim()); reader.close(); }
※関連コンテンツ