"Hola, amigo, una vez más".
"Hola, Rishi. ¿De qué tratará la lección de hoy?"
"Hoy les voy a hablar sobre Reader y Writer".
"¡Pero, Rishi, ya sé casi todo sobre ellos!"
"La repetición es la madre del aprendizaje".
"Hmm. Bueno, está bien".
" Reader y Writer son análogos a InputStream y OutputStream , pero funcionan con caracteres, no con bytes. A veces también se denominan flujos de caracteres, a diferencia de InputStream y OutputStream , que se denominan flujos de bytes".
"Uno es para caracteres, el otro es para bytes. Lo recuerdo".
"No es solo eso. Estas clases están especialmente diseñadas para trabajar con texto y cadenas. Hoy veremos dos implementaciones clásicas de estas clases abstractas: FileReader y FileWriter ".
"Aquí están los métodos de la clase FileReader :"
Método | Descripción |
---|---|
int read() |
Lee un carácter de la secuencia y lo devuelve. |
int read(char cbuf[], int offset, int length) |
Lee una matriz de caracteres, devuelve el número de caracteres leídos. |
boolean ready() |
Devuelve verdadero si es posible leer de la secuencia. |
void close() |
Cierra el flujo de entrada. |
int read(java.nio.CharBuffer target) |
Leer un conjunto de caracteres en un búfer. |
int read(char cbuf[]) |
Lee una matriz de caracteres. |
long skip(long n) |
Salta n caracteres en la transmisión. |
String getEncoding() |
Devuelve la codificación actual de la secuencia. |
"Bueno, sé casi todo esto. Pero ¿qué pasa con FileWriter?"
Método | Descripción |
---|---|
void write(int c) |
Escribe un carácter en la secuencia. |
void write(char cbuf[], int off, int len) |
Escribe una matriz de caracteres en la secuencia. |
void write(char cbuf[]) |
Escribe una matriz de caracteres en la secuencia. |
void write(String str, int off, int len) |
Escribe parte de una cadena en la secuencia. |
void write(String str) |
Escribe una cadena en la secuencia. |
void flush() |
Escribe todo lo almacenado en caché en la memoria en el disco. |
void close() |
Cierra la corriente. |
String getEncoding() |
Devuelve la codificación actual de la secuencia. |
"¡Yo sé eso!"
"Eso es maravilloso. Entonces veamos un ejemplo interesante, y luego Diego te dará más tareas".
"¿Cómo lees un archivo línea por línea? ¿Puedes escribir el código?"
"Fácil, mira:"
// Create a list for storing the lines
List<String> list = new ArrayList<String>();
// Open the file
File file = new File("c:/document.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
// As long as the file isn't empty, read from it
while (reader.ready())
{
list.add(reader.readLine());
}
// Close the file
reader.close();
"Hmm. No está mal".
"¿No está mal? Todo es simple y hermoso. Admítelo, Rishi, ya tengo un excelente dominio de los hilos de E/S. Entonces, ¿qué podría mejorarse aquí?"
"Bueno, por ejemplo, podrías hacer esto:"
File file = new File("c:/document.txt");
List list = Files.readAllLines(file.toPath(), Charset.defaultCharset());
"Hmm. Eso es más corto. Y justo hoy me hablaste de todos estos métodos. Lo volveré a trabajar. Gracias por la lección, Rishi".
"Buena suerte, amigo".
GO TO FULL VERSION