Ich versuche, eine Textdatei Zeile für Zeile mit InputStream aus dem Assets-Verzeichnis in Android zu lesen.
Ich möchte den InputStream in einen BufferedReader konvertieren, um readLine() verwenden zu können.
Ich habe folgenden Code:
InputStream is;
is = myContext.getAssets().open ("file.txt");
BufferedReader br = new BufferedReader (is);
Die dritte Zeile gibt den folgenden Fehler aus:
Multiple markers at this line
The constructor BufferedReader (InputStream) is undefinded.
Was ich versuche, in C++ zu tun, wäre so etwas wie:
StreamReader file;
file = File.OpenText ("file.txt");
line = file.ReadLine();
line = file.ReadLine();
...
Was mache ich falsch oder wie soll ich das machen? Vielen Dank!
BufferedReader kann nicht wickeln InputStream direkt. Es wickelt eine andere ein Reader. In diesem Fall möchten Sie Folgendes tun:
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
Ja, das Umschließen eines InputStream mit einem InputStreamReader, der von einem BufferedReader umschlossen wird, ist ein gängiger „Trick“, um die Funktion readLine() zu verwenden.
– Konfiguration
29. September 2014 um 11:09 Uhr
Ich empfehle: BufferedReader br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)); in Java 7 hinzugefügt
– brcolow
19. März 2015 um 21:51 Uhr
StandardCharsets funktionieren nicht auf API Level >19. @brcolow
– Florida
15. August 2015 um 21:21 Uhr
Ich denke, Sie wollen damit sagen, dass es nicht funktioniert, es sei denn, API-Level> = 19?
– brcolow
15. August 2015 um 22:23 Uhr
@brcolow StandardCharsets wurde in API-Level 19 hinzugefügt. Er meint <19.
– etwas
18. April um 11:29 Uhr
G_H
Ein BufferedReader-Konstruktor nimmt a Leser als Argument, kein InputStream. Sie sollten zuerst einen Reader aus Ihrem Stream erstellen, etwa so:
Reader reader = new InputStreamReader(is);
BufferedReader br = new BufferedReader(reader);
Vorzugsweise geben Sie dem StreamReader-Konstruktor auch einen Charset- oder Zeichencodierungsnamen an. Da ein Stream nur Bytes bereitstellt, bedeutet die Konvertierung dieser in Text, dass die Codierung bekannt sein muss. Wenn Sie es nicht angeben, wird der Systemstandard angenommen.
InputStream is;
InputStreamReader r = new InputStreamReader(is);
BufferedReader br = new BufferedReader(r);
13442200cookie-checkKonvertieren Sie InputStream in BufferedReaderyes