Entrada y Salida en Java: Manejo de Ficheros de Texto, Binarios y Conexiones Web
Operaciones de Entrada y Salida (I/O) en Java
A continuación se detallan diversos ejemplos prácticos para trabajar con flujos de datos (streams), lectura y escritura de ficheros de texto y binarios, así como la conexión a recursos web en Java.
1. Acceso a Recursos Web
Para leer datos directamente desde una dirección URL mediante un flujo de entrada (InputStream):
// Librerías requeridas:
import java.io.*;
import java.net.URL;
// El método debe declarar: throws IOException
URL web = new URL("http://www.google.bg/");
InputStream flujo = web.openStream();
BufferedReader entrada = new BufferedReader(new InputStreamReader(flujo));
String linea = entrada.readLine();
while (linea != null) {
System.out.println(linea);
linea = entrada.readLine();
}
flujo.close();2. Escribir y Crear un Fichero de Texto
Uso de FileWriter y PrintWriter para generar y registrar información en un archivo de texto plano:
// Librerías requeridas:
import java.io.*;
// Declaración de excepción: throws IOException
FileWriter fich = new FileWriter(".\\datos\\nuevoo.txt");
PrintWriter escribir = new PrintWriter(fich);
escribir.println(12345);
fich.close();
escribir.close();3. Leer de un Fichero de Texto
Uso de FileReader encadenado a un BufferedReader para una lectura eficiente línea por línea:
// Librerías requeridas:
import java.io.*;
// Declaración de excepción: throws IOException
FileReader fich = new FileReader(".\\datos\\nuevsso.txt");
BufferedReader leer = new BufferedReader(fich);
String lectura = "";
while (lectura != null) {
lectura = leer.readLine();
if (lectura != null) {
System.out.println(lectura);
}
}
leer.close();4. Escritura en Archivo Binario
Uso de FileOutputStream para almacenar datos a bajo nivel (bytes):
// Librerías requeridas:
import java.io.*;
// Declaración de excepción: throws IOException
FileOutputStream fich = new FileOutputStream(".\\datos\\numeros.txt");
fich.write((byte) 2042);
fich.close();5. Lectura de Archivo Binario
Lectura byte a byte empleando FileInputStream con captura de excepciones:
// Librerías requeridas:
import java.io.*;
// Declaración de excepción: throws IOException
try {
FileInputStream fich = new FileInputStream(".\\datos\\numeros.txt");
int dato = fich.read();
while (dato != -1) {
System.out.println(dato);
dato = fich.read();
}
fich.close();
} catch (FileNotFoundException e) {
System.out.println("ERROR: Fichero no encontrado");
}6. Actualización y Modificación de un Fichero de Texto
Técnica de actualización mediante un fichero auxiliar temporal y posterior reemplazo del archivo original:
// Librerías requeridas:
import java.io.*;
// Declaración de excepción: throws IOException
int pos = 5;
int contPos = 0;
try {
FileReader fich = new FileReader(".\\datos\\nuevo.txt");
BufferedReader escribir = new BufferedReader(fich);
FileWriter fich1 = new FileWriter(".\\datos\\nuevoAux.txt");
PrintWriter copia = new PrintWriter(fich1);
String linea = escribir.readLine();
while (linea != null) {
contPos++;
if (contPos == pos) {
copia.println(1000);
} else {
copia.println(linea);
}
linea = escribir.readLine();
}
copia.close();
escribir.close();
File origen = new File(".\\datos\\nuevo.txt");
File destino = new File(".\\datos\\nuevoAux.txt");
origen.delete();
destino.renameTo(origen);
} catch (FileNotFoundException e) {
System.out.println("Fichero no encontrado");
}