ローカルファイルへのアクセスについては[ローカルファイルのアクセス]、[ファイル入出力 [Android]]でも紹介しています。
同様の方法でおこなうとSDカード上のファイルの読み書きはできません。
ローカルファイルを読み込み・保存する場合はopenFileOutputメソッド等を使用しますが、引数に指定するファイルパスはフルパスではなく、ファイル名のみです。
引数に「/」(パスのセパレイター)が使用できなくなっています。
[スクリーンショットの保存]でも保存方法の違いを書いていますが、改めてSDカードのファイル入出力について書いておきます。
テキストファイルの読み書きを例とします。
テキストファイルの読み込み
private void readFile(String filename) {
FileInputStream inputStream = null;
BufferedReader reader = null;
try {
inputStream = new FileInputStream(filename);
reader = new BufferedReader(
new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
//Log.v(TAG, line);
//読み込んだデータの処理を記述
}
} catch (IOException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
reader.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
テキストファイルの書き込み
private void writeFile(String filename, String src){
try {
FileOutputStream outputStream = new FileOutputStream(filename);
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(outputStream));
writer.write(src);
//writer.flush(); //flushでも書き込んでくれるよう
writer.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}