Mostrando entradas con la etiqueta caracteres. Mostrar todas las entradas
Mostrando entradas con la etiqueta caracteres. 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();

}

4 nov 2015

Los Streams, tipos y jerarquías en Java

Definición


Los flujos de datos o Streams, son abstracciones que permiten tratar la comunicación de información entre una fuente y un destino. Los flujos actúan como interfaz con el dispositivo o clase asociada:
·         Operación independiente del tipo de datos y del dispositivo, por lo que aporta mayor flexibilidad
·         Diversidad de dispositivos (fichero, pantalla, teclado, red, )
·         Diversidad de formas de comunicación
Modo de acceso: secuencial, aleatorio
Información intercambiada: binaria, caracteres, líneas

Están definidos en el paquete java.io

En Java se accede a la E/S estándar mediante los siguientes atributos estáticos de la clase java.lang.System:
System.in                    implementa la entrada estándar
System.out                  implementa la salida estándar
System.err                  implementa la salida de errores


Tipos de flujos

 Flujos de bytes (8 bits)
Realizan operaciones de entrada y salida de bytes.
Están orientados al tratamiento de datos binarios.
Utilizan las clases abstractas InputStream y OutputStream y sus descendientes.

Flujos de caracteres (16 bits)
Realizan operaciones de entrada y salida de caracteres.
Utilizan las clases abstractas Reader y Writer.
Se utilizan sobre todo para la internacionalización ya que permite manejar caracteres Unicode de 16 bits.

Jerarquía de flujos de bytes






Subclases de InputStream

Clase
Función
ByteArrayInputStream
Utiliza un buffer interno para los bytes leídos del stream
StringBufferInputStream
Obsoleta, se recomienda StringReader.
Los bytes leídos al stream son proporcionados desde una cadena.
FileInput Stream
Obtiene los bytes de entrada desde un fichero del sistema
PipedInputStream
Permite implementar mecanismos de tubería,  para por ejemplo desacoplar la entrada de la salida
FilterInputStream
Toma datos de otro stream transformándolos o añadiéndoles funcionalidad
SequenceInputStream
Permite realizar una concatenación lógica de flujos de entrada

Subclases de OutputStream

Clase
Función
ByteArrayOutputStream
Implementa un flujo de salida en el que los datos se van escribiendo en una matriz de bytes que va creciendo
FileOutputStream
Es un flujo de salida para escribir datos en un fichero o en un descriptor de fichero
PipedOutpudStream
Permite implementar mecanismos de tubería,  junto con PipedInputStream
FilterOutputStream
Permite hacer transformaciones en los datos de salida

Jerarquía de flujo de caracteres



21 abr 2014

Cómo contar caracteres, palabras y líneas en Word

Con la proliferación de las redes sociales y las limitaciones que algunas de ellas imponen, sobre todo en cuanto al número de caracteres,  cada vez viene siendo más habitual tener que contabilizar los caracteres escritos. También suele ser muy habitual tener una limitación en un texto en cuanto al número de palabras. Desde el procesador de textos Word, se pueden obtener estos datos pulsando la combinación de teclas:

Alt + h + c

con ello conseguimos una ventana con información como la siguiente:


Si pulsamos la combinación de teclas cuando tenemos un fragmento de texto seleccionado la información será referida a ese fragmento.