2016-08-04 28 views
0

Ich versuche, eine bestimmte Datei aus einem bestimmten Ordner auf Android zu lesen, die dann in eine SQLite-Datenbank eingelesen wird. Das Einlesen in die Datenbank funktioniert einwandfrei, wenn ich es aus dem Ordner "Assets" herausgeholt habe (dies funktioniert jedoch nicht für den endgültigen Build, da sich die Datei zur Zeit ändert). Ich habe jedoch ständig Probleme mit der Datei nicht gefunden für den tatsächlichen Zugriff auf die Datei.Android Auswählen eines bestimmten Dateispeicherorts

Auf dem Gerät wird der Pfad für die Datei wie folgt angezeigt: "/ storage/emulated/0/Wellpro" und der Dateiname ist "orfice.txt".

Momentan wird mein Code für den Zugriff auf die Datei aus drei oder vier verschiedenen Quellen zusammengewürfelt, da ich dafür irgendwie nichts gefunden habe.

 String fileName = "/storage/emulated/0/Wellpro/orfice.txt"; 
     String path = Environment.getExternalStorageDirectory()+fileName; 
     InputStream is = new FileInputStream(path); 
     BufferedReader buffer = new BufferedReader(new InputStreamReader(is, "UTF-8")); 

Jede Hilfe würde sehr geschätzt werden.

Danke.

Antwort

1

getAbsolutePath() geben Sie den vollständigen Pfad der SD-Karte.

versuchen

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath(); 
String fileName = "myFile.txt"; 

// check if file path exist then read the file 
File f = new File(baseDir + File.Separator + fileName); 
FileInputStream fiStream = new FileInputStream(f); 
+0

Die Datei befindet sich nicht im Pfad der SD-Karte. Es sitzt in einem Ordner. Auch ich weiß nicht, ob dies Dinge ändert, aber es ist nicht auf einer SD-Karte persay. Es ist auf dem internen Speicher, aber der Speicher, auf den jede App zugreifen kann. Obwohl, wie ich es verstehe, wird es sowieso als externer Speicher behandelt. – Mitchell

+0

Ich habe dich nicht genau verstanden. glücklich, wenn es dir hilft zu verstehen. – Kathi

+0

Die Datei befindet sich in einem Ordner namens "Wellpro". Also, ich würde zuerst in diesen Ordner gehen müssen, die auf den Weg der SD-Karte geht nicht, würde ich nicht denken? – Mitchell

0

Ihr erster Fehler ist, dass Dateiname "orfice.txt" da Environment.getExternalStorageDirectory sein sollte() gibt Ihnen den Weg. Folgen Sie @ Kathis Lösung, die gut ist.

Wenn Sie immer noch mit einem Problem konfrontiert sind, stellen Sie sicher, dass Sie die erforderliche Berechtigung für den Zugriff auf externen Speicher hinzugefügt haben. Wenn Sie eine API < 23 entwickeln, fügen dem Android Manifest die folgende Berechtigung

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

Wenn Sie API entwickeln = 23, sollten Sie die Erlaubnis zur Laufzeit beantragen. Überprüfen Sie https://developer.android.com/training/permissions/requesting.html für weitere Informationen, wie es geht.

+0

Okay, also würde ich das "/ storage/emuliert/0/Wellpro /" in das getExternalStorageDirectory setzen wie getExternalStorageDirectory ("/ storage/emulated/0/Wellpro /") ?? – Mitchell

+0

Nein sollten Sie verwenden Datei file = neue Datei (Environment.getExternalStorageDirectory(). GetAbsolutePath() + "/Wellpro/orfice.txt"); Hinweis: Externer Speicher ist ein Teil Ihres integrierten Flash-Speichers. –

+0

Es ist besser, auch Environment.getExtrenalStorageDirectory() ohne getAbsolutePath() zu verwenden –