Mostrando entradas con la etiqueta read. Mostrar todas las entradas
Mostrando entradas con la etiqueta read. Mostrar todas las entradas

6 nov 2015

Lectura/Escritura de ficheros de caracteres en Java

Se utilizan las clases FileReader y FileWriter

Lo primero es crear un ejemplar de la clase pasando al constructor una cadena con el nombre del fichero o un File.

Para la lectura y la escritura se utilizan los métodos read o write, que se encargan de leer o escribir un carácter.

Los caracteres alfanuméricos se pueden tratar en muchos esquemas de codificación, por defecto utilizan UTF-8, pero se puede pasar como argumento a FileReader y FileWriter una Charset determinado (ASCII, UNICODE, ISO-8859-1, etc)

Cuando se terminan las operaciones sobre los datos se cierra el fichero con el método close.

FileReader además proporciona los siguientes métodos, que devuelven el número de caracteres leídos, o -1, si se ha llegado al final del fichero:
int read (),  lee un carácter.
int read (char[] buf), lee caracteres en un array buf.
int read(char[] buf, int despl, int n), lee como máximo n caracteres en el array buf y empezando en buf[despl].

FileWriter además proporciona los siguientes métodos:
void write (int car), escribe un carácter.
void write (char[] buf), escribe un array de caracteres.
void write (char[] buf, int despl, int n), escribe n caracteres en el array buf y empezando en buf[despl].
void write (String st), escribe una cadena de caracteres.
append (char car), añade un carácter al fichero.


Lectura/Escritura en ficheros de caracteres utilizando memoria intermedia (buffered)

Las clases anteriores traducen directamente cada operación de E/S a una llamada al sistema operativo subyacente. Esto puede ser muy ineficiente cuando se procesan grandes volúmenes de información; resulta mucho más rápido leer y escribir siempre en una zona de memoria intermedia, que solo se llena o vacía (mediante llamadas al sistema operativo) cuando es necesario.

Las clases con memoria intermedia para el tratamiento de caracteres son: BufferedReader y BufferedWriter.

El constructor de la clase con memoria intermedia recibe un ejemplar de la clase sin memoria intermedia.

Además nos permiten procesar líneas de texto completas, mediante los métodos readLine().

Ejemplos:
FileReader fr = new FileReader(fichent)
BufferedReader br = new BufferedReader(fr);
FileWriter fw = new FileWriter(fichsal);
BufferedWriter bw = new BufferedWriter(fw);


Lectura/Escritura en ficheros de caracteres haciendo lectura por líneas

Para leer textos por líneas se emplean las clases BufferedReader y PrintWriter. El método de funcionamiento puede ser leer una línea completa, procesarla y escribirla en el archivo de destino.

Hay que tener en cuenta que cada sistema operativo hace uso de marcadores de fin de línea diferentes.

BufferedReader flujoDeEntrada = null;       
PrintWriter flujoDeSalida = null;       
try {           
flujoDeEntrada =  new BufferedReader(new FileReader(libro.txt"));           
flujoDeSalida =  new PrintWriter(new FileWriter("copia_libro.txt"));
String linea;
while ((linea = flujoDeEntrada.readLine()) != null) {
flujoDeSalida.print(linea);
}
}  finally {
if (flujoDeEntrada != null) {
flujoDeEntrada.close();
}
if (flujoDeSalida != null) {
flujoDeSalida.close();

}

5 nov 2015

Lectura/Escritura de ficheros binarios en Java


Se utilizan las clases FileInputStream y FileOutputStream

Lo primero es crear un ejemplar de la clase pasando al constructor una cadena, con el nombre del fichero, o un File.

Para la lectura y la escritura se utilizan los métodos read o write, que se encargan de leer o escribir un byte.

Cuando se terminan las operaciones sobre los datos se cierra el fichero con el método close.

Ejemplo:
FileInputStream in =  new FileInputStream(fichero);
FileOutputStream out = new FileOutputStream("copia_"+fichero);           
int c;           
while ((c = in.read()) != -1) {
out.write(c);
int.close();
out.close();


Lectura/Escritura en ficheros binarios utilizando memoria intermedia (buffered)

Para leer y escribir bytes con memoria intermedia:
FileInputStream fis;
fis = new FileInputStream(“imagen.jpg”)
BufferedInputStream bis= new BufferedInputStream(fis);
FileOutputStream fos;
fos = new FileOutputStream(“copia_imagen.jpg”);
BufferedOutputStream bos = new BufferedOutputStream(fos);

7 oct 2014

Entrada y Salida básica en Java

La E/S básica en Java se realiza mediante la clase System, a través de sus atributos estáticos err, out e in.

SALIDA
La salida se efectúa a través de System.err o System.out. Estos dos atributos de System son de tipo PrintStream y permiten utilizar, entre otros, los métodos:
o   print(), escribe el argumento. Está sobrecargado para los tipos primitivos.
§  System.out.print(Hola, mundo);
§  System.out.print(2050);
o   println(), escribe el argumento y salta de línea.
o   printf(), salida con formato de características análogas a las de C, con mejoras.
§  System.out.printf(Saludo: %s %d %n, Hola, mundo, 2050);

ENTRADA
La entrada puede efectuarse a través de System.in, de tipo Inputstream, de varias formas:
o   Mediante el método read(). Bastante limitado porque sólo permite leer bytes (valores numéricos entre 0 y 255) que devuelve como un entero.
o   a partir de un ejemplar de Console proporcionado por System. Sólo permite leer líneas completas, de tipo String, que después deben ser interpretadas si lo que se quiere obtener corresponde a otros tipos, por ejemplo numéricos.
o   a través de un ejemplar de Scanner, que se construye a partir de System.in,  en este caso permite acceder directamente a traductores de todos los tipos básicos, incluyendo líneas completas (String).


Ejemplo con read()

package entradaRead;

import java.io.IOException;

public class EntradaRead {

    public static void main(String[] args) throws IOException {
        char carac;
        System.out.print("Introduce una frase: ");
        while ((carac=(char) System.in.read()) != '\n')
            System.out.print(carac);
    }
   
}


Ejemplo con Console

package entradasalidaconsole;
import java.io.Console;

public class EntradaSalidaConsole {

    public static void main(String[] args) {
       String cadena = "una frase";
       Console con = System.console();
        if (null != con) {
            con.printf("%s%n", "Escribo desde Console");
            cadena= con.readLine("Escriba %s: ", cadena);
            con.printf("La cadena introducida es:%s%n", cadena);
            con.printf("Escribe otra frase: ");
            cadena= con.readLine();
            con.printf("La cadena introducida es:%s%n", cadena);
        } else {
            System.err.println("Perdón, no se puede usar la consola.");
        }
    }
}


Ejemplo con Scanner

package entradasalidascanner;
import java.util.Scanner;

public class Entradasalidascanner {

public static void main(String[] args) {
       String cadena = "una frase";
       Scanner sc = new Scanner(System.in);
       System.out.printf("Escriba %s: ", cadena);
       cadena= sc.nextLine();
       System.out.printf("La cadena introducida es:%s%n", cadena);
       System.out.print("Escribe otra frase: ");
       cadena= sc.nextLine();
       System.out.printf("La cadena introducida es:%s%n", cadena);
    }
    

}