tengo este código en Java:leer una línea de texto de un flujo de entrada en Java manteniendo el carácter (s)-terminación de línea
InputStreamReader isr = new InputStreamReader(getInputStream());
BufferedReader ir = new BufferedReader(isr);
String line;
while ((line = ir.readLine()) != null) {
//do stuff with "line"
}
Si el flujo de entrada contiene lo siguiente: "hola \ nhey \ Ryo \ r \ Ngood días", entonces la variable de línea estaría siguiendo en cada iteración:
- hola
- bueno
- yo
- buena-da Y
quiero leer una línea a la vez, pero quiero mantener el carácter (s)-terminación de línea:
- hola \ n
- bueno \ r
- años \ r \ n
- buenos días
¿Cómo puedo hacer esto? ¿Hay clases preparadas que pueda usar?
-
Actualización:
Aquí es lo que estoy tratando de hacer y por lo que necesita para mantener el carácter de fin de línea (y por qué el carácter EOL puede ser diferente).
Estoy leyendo una solicitud POST. Consisten en mensajes de texto puros donde las líneas siempre terminan con \ r \ n (según la especificación estándar). Sin embargo, la solicitud POST puede contener datos binarios, que pueden contener bytes que parecen caracteres de terminación para los objetos de Java Reader.
En mi ejemplo, se está cargando una imagen. Los datos de la imagen se envían en una sola línea. Sin embargo, sin embargo, los datos binarios de la imagen contienen bytes que el LECTOR interpretaría como "\ n", "\ r" o algunas veces "\ r \ n" si esos dos bytes están uno al lado del otro.
Tengo que leer la solicitud POST una línea a la vez porque así es como funciona. Supongo que PODRÍA leer todo y luego analizar todo. Pero eso no es eficiente, especialmente si se está cargando un archivo de gran tamaño (digamos 1024 MiB).
Si no puede encontrar una solución mejor, puede implementar su 'readLine' utilizando' BufferedReader.read() 'en un bucle' while'. – pts
Tenía la esperanza de que esto muy básico ya estuviera hecho, uno hubiera pensado que podrían haberlo hecho para que el método readLine() de BufferedReader aceptara un booleano, si es verdadero, también incluiría el (los) carácter (es) de separador de línea y si es falso, se comportaría como lo hace en este momento. – Mike
¿Es importante mantener el carácter final particular? Porque lo primero que pensé fue simplemente agregar un '\ n' a la línea – TheLQ