Hier ist, was ich in einer Aktivität zum gepufferten Lesen mache, erweitern / modifizieren, um es Ihren Bedürfnissen anzupassen
BufferedReader reader = null;
try {
reader = new BufferedReader(
new InputStreamReader(getAssets().open("filename.txt")));
// do reading, usually loop until end of file reading
String mLine;
while ((mLine = reader.readLine()) != null) {
//process line
...
}
} catch (IOException e) {
//log the exception
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
//log the exception
}
}
}
EDIT: Meine Antwort ist vielleicht nutzlos, wenn Ihre Frage lautet, wie es außerhalb einer Aktivität gemacht werden soll. Wenn Ihre Frage einfach ist, wie man eine Datei aus einem Asset liest, ist die Antwort oben.
AKTUALISIEREN :
Um eine Datei mit dem Typ zu öffnen, fügen Sie den Typ einfach wie folgt in den InputStreamReader-Aufruf ein.
BufferedReader reader = null;
try {
reader = new BufferedReader(
new InputStreamReader(getAssets().open("filename.txt"), "UTF-8"));
// do reading, usually loop until end of file reading
String mLine;
while ((mLine = reader.readLine()) != null) {
//process line
...
}
} catch (IOException e) {
//log the exception
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
//log the exception
}
}
}
BEARBEITEN
Wie @Stan im Kommentar sagt, summiert der Code, den ich gebe, keine Zeilen. mLine
wird bei jedem Durchgang ersetzt. Deshalb habe ich geschrieben//process line
. Ich gehe davon aus, dass die Datei irgendeine Art von Daten enthält (dh eine Kontaktliste) und jede Zeile separat verarbeitet werden sollte.
Wenn Sie die Datei einfach ohne jegliche Verarbeitung laden möchten, müssen Sie sie mLine
bei jedem Durchgang mit jedem Durchgang zusammenfassen StringBuilder()
und anhängen.
Noch eine Bearbeitung
Nach dem Kommentar von @Vincent habe ich das hinzugefügt finally
Block .
Beachten Sie auch, dass Sie in Java 7 und höher try-with-resources
die Funktionen AutoCloseable
und Closeable
Funktionen des aktuellen Java verwenden können.
KONTEXT
In einem Kommentar weist @LunarWatcher darauf hin, dass getAssets()
es sich um ein class
In handelt context
. Wenn Sie es also außerhalb von a aufrufen, activity
müssen Sie darauf verweisen und die Kontextinstanz an die Aktivität übergeben.
ContextInstance.getAssets();
Dies wird in der Antwort von @Maneesh erklärt. Wenn dies für Sie nützlich ist, stimmen Sie seiner Antwort zu, denn das ist er, der darauf hingewiesen hat.