ここから本文です

テキストファイルの書き込みをしようと思うと、IOException になります。 テキス...

みーさん

2017/12/1323:58:21

テキストファイルの書き込みをしようと思うと、IOException になります。
テキストはappの下のassetsに存在しています。
何か心当たることがあればご教授お願いします。

public void saveButtonTapped(View view) {
try {
String sep = System.getProperty("line.separator");//改行
PrintWriter printWriter = new PrintWriter(new BufferedWriter(new FileWriter(myfile.txt)));
for (MapDiary result : list) {
printWriter.println(result.getDate()+","+result.getTitle()+","+result.getDetail()
+","+result.getLatitude()+","+result.getLongitude()+sep);
}
printWriter.close();
} catch (IOException ex) {
Toast toast = Toast.makeText(this,
"テキストファイルへの書き込みに失敗しました", Toast.LENGTH_LONG);
toast.show();
}
}

閲覧数:
42
回答数:
1
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

とみおさん

2017/12/1401:45:31

assetsは読み出し専用フォルダで書き込みはできないはず...
アプリ内(内部ストレージ)で書き込みできる領域は決まっていて
Context# getFilesDir().toString()
でパスを取得できます

なので、ファイル名を
String fileName = this.getFilesDir().toString()+"/myfile.txt";
とすると、保存できるファイルがつくれるかと

あと、
> printWriter.close();
ファイルクローズ処理はfinallyブロックでやりましょう
tryブロックでExceptionが発生した際、Fileクローズしないシーケンスが生まれるので

java7以上あるならtry-with-resources文も使えるので
close書き忘れしちゃう人にはお勧め

  • この返信は取り消されました。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2017/12/14 07:22:27

いつも有難うございます。
勘違いしてました。、finallyも確かにそうですね。書き出すことばかりに意識が行きすぎてました。

あとは、ファイルが存在しているときは
新規で作らないというのを
たぶんexistsメソッドかな?で作ってみます

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる