Laden einer .txt aus der App

  • Hallo,


    ich befasse mich gerade mit dem Speicher und Lesen von Datein. Bis jetzt funktionieren die ersten Tests mit EditText Strings. Nun möchte ich etwas weiter gehen und bereits erstellte .txt Datein von Android lesen und anzeigen zu lassen. Leider komme ich an einer Stelle nicht weiter.

    Die Datei wurde via R.raw.test erkannt und der testDatei zugeschrieben, aber wie muss mein nächster Schritt sein? Ich denke, dass testDatei irgentwie von FileInputStream verwendet werden muss, aber ich weiß nicht wie :( .


    Danke



    EDIT: Die .txt-Datei hat den Inhalt "text"

  • Danke für den Tipp, aber

    Code
    String content = new String(Files.readAllBytes(Paths.get("test.txt")));


    Paths wird von Eclipse nicht akzeptiert.


    Ich habe jetzt via

    Code
    catch (IOException ex) {
    	// TODO: handle exception
    	Log.d("jb","Button5 "+ex.getMessage());
    }

    den Vorgang beobachtet und siehe da


    Code
    Button5 /data/data/com.jb.datenspeichern/files/text.txt: open faile
    d: ENOENT (No such file or directory)

    Wo ist dieses Verzeichnis? In Eclipse gibt es ein solches nicht.

  • Bei /data/data/com.jb.datenspeichern/files/text.txt habdelt es sich um eine Datei, die Teil Deiner App ist. In dem Fall benötigst Du tatsächlich keine READ_EXTERNAL_STORAGE permission. Allerdings solltest Du schon wissen, wo die Datei sich im Dateisystem befindet, wenn Du sie lesen willst.


    Dein Problem ist IMHO nicht das Schreiben und Lesen von Dateien sondern das Finden der Dateien

  • Hallo,


    ich weiß natürlich wo meine Daten ist -> ...\DatenSpeichern\res\raw\test.txt
    Wird der Ordner /data/data/com.jb.datenspeichern/files/ erst bei der Umwandlung zur .apk erzeugt?

  • Du musst unterscheiden!
    Du kannst einmal dynamisch files während der app laufzeit erzeugen und daraus lesen, UND du kannst während des programmierens, ein File in die Ressourcen schieben und dort auch davon lesen.


    Wenn du das File in den Ressourcen liegen hast, musst du auch über die Ressourcen darauf zugreifen.

  • Das Speichern und Lesen von Files klappt (zumindest mit Strings).
    Aber auf eine in den Ressourcen hinterlegte Datei zu zugreifen noch nicht, und eben dies ist mein Übungsziel.
    Die Datei "test.txt" mit Inhalt "test" ist in res\raw\ angelegt. Sollte durch

    Code
    Resources res = getResources();
    InputStream testDatei = res.openRawResource(R.raw.test);


    bei Android registriert und ein Objekt der Klasse InputStream sein.


    Jetzt sollte via openFileInput und FileInputStream die Datei gelesen werden, aber es geht nicht.

    Code
    try {
    	Resources res = getResources();
    	InputStream testDatei = res.openRawResource(R.raw.test);
    			
    	FileInputStream eingabeDatei = openFileInput ("test.txt");
    	List<Byte> daten = new ArrayList <Byte>();
            .....


    Als zweiten Ansatz für das Selbe Problem versuchte ich es mit dem FileReader und BufferedReader, aber mit dem selben Ergebnis (und der selben Fehlermeldung).

    Fehlermeldung



    Code
    Button5 /data/data/com.jb.datenspeichern/files/text.txt: open faile
    d: ENOENT (No such file or directory)


    Kurz zur Frage:
    Wo ist mein Fehler? Es soll lediglich eine .txt aus dem res/raw-Ordner gelesen werden.

  • Ich weiß nicht wo du diese kruden beispiele her hast aber theoretisch ist das unsinn was du da tust. Erst holst du dir die Datei aus den ressourcen und dann willst du plötzlich über den dateinamen darauf zugreifen. das macht keinen sinn. Du greifst über den Inputstream auf den inhalt der datei zu, indem du ihn an eine entsprechende funktion übergibst.


    zum beispiel würde da gehen:
    BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!