Konvertieren Sie InputStream in BufferedReader

Lesezeit: 1 Minute

Benutzer-Avatar
karse23

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

Benutzer-Avatar
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);

1344220cookie-checkKonvertieren Sie InputStream in BufferedReader

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy