2011-03-04 20 views
124

Estoy tratando de leer un archivo de texto línea por línea usando InputStream desde el directorio de activos en Android.Convertir InputStream en BufferedReader

Quiero convertir el InputStream a un BufferedReader para poder usar el readLine().

Tengo el siguiente código:

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

La tercera línea cae el siguiente error:

Multiple markers at this line 
The constructor BufferedReader (InputStream) is undefinded.

Lo que estoy tratando de hacer en C sería algo así como:

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

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

¿Qué estoy haciendo mal o cómo debo hacer eso? ¡Gracias!

Respuesta

226

BufferedReader no se puede ajustar un InputStream directamente. Se envuelve otro Reader. En este caso te gustaría hacer algo como:

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

Sí, envolver un InputStream con un InputStreamReader, que está envuelto por un BufferedReader es un "truco" común para usar la función readLine(). – Anton

+11

Recomiendo: 'BufferedReader br = new BufferedReader (nuevo InputStreamReader (es, StandardCharsets.UTF_8));' agregado en Java 7 – brcolow

+0

StandardCharsets no funcionan en el nivel API> 19. @ brcolow – Florida

17
InputStream is; 
InputStreamReader r = new InputStreamReader(is); 
BufferedReader br = new BufferedReader(r); 
19

Un constructor toma un BufferedReader reader como argumento, no un InputStream. Usted debe crear primero un lector de su corriente, así:

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

Preferiblemente, también proporcionará un nombre de conjunto de caracteres o la codificación de caracteres al constructor StreamReader. Como una secuencia solo proporciona bytes, convertirlos en texto significa que la codificación debe ser conocida. Si no lo especifica, se asume el valor predeterminado del sistema.

Cuestiones relacionadas