0

Zunächst einmal versuche ich nicht auf die SDCard zu schreiben. Ich möchte einige Informationen in eine Datei schreiben, die zwischen den Anwendungen der App bestehen bleibt. Es ist im Wesentlichen eine Datei, um Favoriten des bestimmten Benutzers zu halten. Hier ist, wie der Code aussieht:Warum erhalte ich FileNotFoundException, wenn ich erstelle und versuche, auf Android Emulator in Datei zu schreiben?

Wenn Sie diesen Code ausführen, erhalten wir immer die "Datei existiert nicht." Nachricht in unserem DDMS-Protokoll.

Wir haben auch versucht, den folgenden Code ohne Erfolg:

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, der in der FileNotFoundException führt.

Ich habe mehrere Tutorials zum Schreiben und Lesen von Dateien auf Android gelesen und ich glaube, ich folge ihnen ziemlich genau, so dass ich mir nicht sicher bin, warum dieser Code nicht erfolgreich funktioniert. Ich schätze jede Hilfe!

+0

Haben Sie jemals in die Datei geschrieben? New File() erstellt keine Datei, bis Sie einen OutpuStream öffnen und darauf schreiben. –

Antwort

2

Sie sollten die Klasse File nicht direkt verwenden. Verwenden Sie Activity.getCacheDir(), um das Cache-Verzeichnis zu erhalten, das für Ihre Anwendung spezifisch ist. Verwenden Sie dann new File(cachedir, "filename.tmp"), um die Datei zu erstellen.

+0

Schauen Sie sich auch die Voreinstellungen Klassen in Android. Ich denke, das könnte besser für die Liste der Daten passen. –

+0

Wäre es besser, Activity.getFilesDir() als .getCacheDir() zu verwenden? – jbranchaud

+0

getFilesDir ist das gleiche wie mit openFileOutput. Es kommt also darauf an, wofür du es brauchst. Wenn es nicht wirklich zwischenspeichert, dann ist getFilesDir möglicherweise besser geeignet. –

1

Einstellungen und SQLLite ermöglichen es Ihnen, persistente Daten zu haben, ohne Ihre eigenen Dateien zu verwalten.

gemeinsame Einstellungen verwenden Sie es von Ihrem Kontext greifen, dann bearbeiten Sie die Werte wie so

mySharedPreferences = context.getSharedPreferences("DatabaseNameWhateverYouWant", 0); 
mySharedPreferences.getEditor().putString("MyPreferenceName", "Value").commit(); 

eine Präferenz Um aus

mySharedPreferences.getString("MyPreferenceName", "DefaultValue"); 

Das ist wirklich der einfachste Weg ist einfach zu tun, Einstellungen, viel einfacher als eine Datei zu machen. Es werden mehr als Strings unterstützt, die meisten grundlegenden Datentypen können zur Klasse "Preferences" hinzugefügt werden.

Verwandte Themen