Warum erhalte ich, wenn ich FileNotFoundException erstellen und versuchen, zu schreiben, um Datei auf Android-Emulator?
-
09-10-2019 - |
Frage
Zunächst einmal, ich versuche nicht, auf die SD-Karte zu schreiben. Ich mag einige Informationen zu einer Datei, die verharrt zwischen den Anwendungen der App schreiben. Es ist im Wesentlichen eine Datei zu halten Favoriten des jeweiligen Benutzers. Hier ist, was der Code wie folgt aussieht:
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();
}
Wenn Sie diesen Code ausführen, erhalten wir immer die „Datei existiert nicht.“ Nachricht in unserem DDMS einloggen.
Wir haben auch den folgenden Code ohne Erfolg versucht:
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();
}
Es ist dieser zweite Teil des Codes, dass die Ergebnisse in der FileNotFoundException.
Ich habe mehrere Tutorials auf das Schreiben und Lesen von Dateien auf Android lesen, und ich glaube, dass ich ihnen bin nach ziemlich eng, so dass ich nicht sicher bin, warum dieser Code nicht erfolgreich arbeiten. Ich schätze jede Hilfe!
Lösung
You shouldn't use the File
class directly. Use Activity.getCacheDir()
to get the cache dir which is specific to your application. Then use new File(cachedir, "filename.tmp")
to create the file.
Andere Tipps
Preferences and SQLLite will both allow you to have persistent data without managing your own files.
To use shared preferences you grab it from your context, then you edit the values like so
mySharedPreferences = context.getSharedPreferences("DatabaseNameWhateverYouWant", 0);
mySharedPreferences.getEditor().putString("MyPreferenceName", "Value").commit();
To get a preference out
mySharedPreferences.getString("MyPreferenceName", "DefaultValue");
This is really the simplest way to do basic preferences, much easier then doing a file. More then strings are supported, most basic data types are available to be added to the Preferences class.