166 votes

Convertir InputStream à BufferedReader

Je suis en train de lire un fichier texte ligne par ligne à l'aide de InputStream à partir du répertoire des ressources en Android.

Je veux convertir le InputStream à un BufferedReader pour être en mesure d'utiliser la readLine().

J'ai le code suivant:

InputStream is;
is = myContext.getAssets().open ("file.txt");
BufferedReader br = new BufferedReader (is);

Le troisième ligne de gouttes d'erreur suivants:

Plusieurs marqueurs à cette ligne
Le constructeur BufferedReader (InputStream) est undefinded.

Ce que j'essaie de le faire en C serait quelque chose comme:

StreamReader file;
file = File.OpenText ("file.txt");

line = file.ReadLine();
line = file.ReadLine();
...

Ce que je fais mal ou comment dois-je faire? Merci!

309voto

ColinD Points 48573

BufferedReader peut pas envelopper un InputStream directement. Il enveloppe un autre Reader. Dans ce cas, vous voulez faire quelque chose comme:

BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));

25voto

G_H Points 5979

Un BufferedReader constructeur prend un lecteur comme argument, pas un InputStream. Vous devez d'abord créer un Lecteur à partir de votre flux, comme suit:

Reader reader = new InputStreamReader(is);
BufferedReader br = new BufferedReader(reader);

De préférence, vous aussi vous fournir un jeu de caractères ou de codage de caractères du nom du constructeur StreamReader. Depuis un flux fournit simplement octets, la conversion de ces texte signifie que le codage doit être connue. Si vous ne spécifiez pas, le système par défaut qui est utilisé.

21voto

Hans Points 724
InputStream is;
InputStreamReader r = new InputStreamReader(is);
BufferedReader br = new BufferedReader(r);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X