Warum erhalte ich, wenn ich FileNotFoundException erstellen und versuchen, zu schreiben, um Datei auf Android-Emulator?

StackOverflow https://stackoverflow.com/questions/4424200

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!

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top