J'essaie de lire ligne par ligne un fichier texte à l'aide de InputStream à partir du répertoire assets d'Android.
Je veux convertir InputStream à BufferedReader pour pouvoir utiliser readLine ().
J'ai le code suivant:
InputStream is;
is = myContext.getAssets().open ("file.txt");
BufferedReader br = new BufferedReader (is);
La troisième ligne supprime l'erreur suivante:
Plusieurs marqueurs sur cette ligne Le constructeur BufferedReader (InputStream) est indéfini.
Ce que j'essaie de faire en C serait quelque chose comme:
StreamReader file;
file = File.OpenText ("file.txt");
line = file.ReadLine();
line = file.ReadLine();
...
Qu'est-ce que je fais mal ou comment devrais-je le faire? Merci!
BufferedReader
ne peut pas envelopper un InputStream
directement. Cela enveloppe une autre Reader
. Dans ce cas, vous voudriez faire quelque chose comme:
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
Un constructeur BufferedReader prend un lecteur en 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 fournissez également un nom de jeu de caractères ou de codage de caractères au constructeur StreamReader. Comme un flux ne fournit que des octets, leur conversion en texte signifie que le codage doit être connu. Si vous ne le spécifiez pas, la valeur système par défaut est utilisée.
InputStream is;
InputStreamReader r = new InputStreamReader(is);
BufferedReader br = new BufferedReader(r);