Androidエミュレータでファイルを作成して書き込み、書き込みを試みるときにFilenotFoundExceptionを取得するのはなぜですか?
-
09-10-2019 - |
質問
まず、SDCardに手紙を書こうとはしていません。アプリの使用の間に持続するファイルに情報を書きたいと思います。それは本質的に特定のユーザーのお気に入りを保持するファイルです。これがコードのように見えるものです:
try {
File file = new File("favorites.txt");
if (file.exists()) {
Log.d(TAG, "File does exist.");
fis = new FileInputStream(file);
br = new BufferedReader(new InputStreamReader(fis));
}
else {
Log.d(TAG, "File does not exist.");
return favDests;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
このコードを実行するとき、私たちは常に「ファイルは存在しません」を取得します。 DDMSログのメッセージ。
また、次のコードを試しました。
try {
File file = new File(GoLincoln.FAV_DEST_FILE);
fis = new FileInputStream(file);
br = new BufferedReader(new InputStreamReader(fis));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
FilenotFoundExceptionをもたらすのは、コードのこの2番目の部分です。
Androidでファイルの作成と読み取りに関する複数のチュートリアルを読んだことがありますが、私はそれらをかなり密接にフォローしていると信じているので、なぜこのコードが正常に機能しないのかわかりません。どんな助けにも感謝します!
解決
使用しないでください File
直接クラス。使用する Activity.getCacheDir()
アプリケーションに固有のキャッシュ監督を取得します。次に、使用します new File(cachedir, "filename.tmp")
ファイルを作成します。
他のヒント
設定とSQLLITEの両方が、独自のファイルを管理せずに永続的なデータを持つことができます。
共有設定を使用するには、コンテキストからそれをつかむには、そのような値を編集します
mySharedPreferences = context.getSharedPreferences("DatabaseNameWhateverYouWant", 0);
mySharedPreferences.getEditor().putString("MyPreferenceName", "Value").commit();
好みを得るため
mySharedPreferences.getString("MyPreferenceName", "DefaultValue");
これは本当に基本的な設定を行う最も簡単な方法であり、ファイルを実行するよりもはるかに簡単です。より多くの文字列がサポートされており、ほとんどの基本的なデータ型を設定クラスに追加できます。
所属していません StackOverflow