Documentos de Académico
Documentos de Profesional
Documentos de Cultura
LECTURA
• MODO CARÁCTER
• MODO BYTES
• MODO ALEATORIO
INTEGRANTES:
MATERIA:
CURSO:
6-1
DOCENTE:
ING.
AÑO LECTIVO:
2020-2021
Indice
GESTIÒN BASICA DE ARCHIVOS.............................................................................2
MODO CARACTER.....................................................................................................11
Modo Bytes:...................................................................................................................13
clases DataInputStream y DataOutputStream................................................................13
Modo aleatorio...............................................................................................................16
RandomaccessFile.....................................................................................................16
GESTIÒN BASICA DE ARCHIVOS
Los programas usan variables para almacenar información: los datos de
entrada, los resultados calculados y valores intermedios generados a lo largo del
cálculo. Toda esta información es efímera: cuando acaba el programa, todo
desaparece. Pero, para muchas aplicaciones, es importante poder almacenar
datos de manera permanente. Cuando se desea guardar información más allá
del tiempo de ejecución de un programa lo habitual es organizar esa información
en uno o varios ficheros almacenados en algún soporte de almacenamiento
persistente. Otras posibilidades como el uso de bases de datos utilizan archivos
como soporte para el almacenamiento de la información.
En Java, los distintos tipos de ficheros se diferencian por las clases que
usaremos para representarlos y manipularlos.
• Acceso directo
• Secuencial
Modo secuencial
• Para leer un dato concreto del archivo hay que avanzar siempre hasta
donde se
encuentre dicho dato. Si el dato requerido se encuentra antes del dato en que
está se está posicionado el archivo en un momento dado, será necesario
regresar al comienzo del archivo y avanzar hasta el dato necesario.
Acceso Aleatorio
Los métodos que resultan de interés para el acceso aleatorio son los que
permiten acceder a un lugar concreto dentro del archivo y conocer el punto del
mismo en el que se va a realizar la operación de lectura y/o escritura:
• getFilePosition(): Devuelve la posición actual donde se va a realizar la
en el byte especificado.
import java.io.EOFException;
char c;
try {
archivo.length());
do {
1);
archivo.writeByte(Character.toUpperCase(c));
mayusculas”);
} while (!finArchivo);
En el lenguaje Java los flujos de datos se describen mediante clases que forman
jerarquías según sea el tipo de dato char Unicode de 16 bits o byte de 8 bits. A su
vez, las clases se agrupan en jerarquías según sea su función de lectura o de
escritura. La característica de internacionalización del lenguaje Java es la razón por
la que existe una jerarquía separada de clases para la lectura y escritura de
caracteres. Todas estas clases se encuentran en el paquete java.io, por lo que al
principio del código fuente se deberá escribir la sentencia
Ilustración 1- Sentencia
BYTE, 8 bits
Ilustración 3- Byte
Lectura
La primera versión lee un byte como entero del flujo de entrada, devuelve – 1 si
no hay más datos que leer. La segunda versión, lee un array de bytes devolviendo el
número de bytes leídos. La tercera versión, lee también, un array de bytes, pero nos
permite especificar, la posición de comienzo del array en la que se empiezan a
guardar los bytes, y el máximo número de bytes que se van a leer.
Métodos de lectura
La lectura del fichero se realiza con una función que depende del tipo de datos
que queremos leer.
• VoidreadFully (byte b []); Lee bytes del fichero y los almacena en un vector
b.
• VoidreadFully (byte b [], intini, intlen); Lee len bytes del fichero y los
almacena en un vector b.
Escritura
La clase Writer proporciona tres métodos para escribir un carácter char o un array
de caracteres
Métodos de escritura
La escritura del fichero se realiza con una función que depende el tipo de datos
que se desee escribir.
• Voidwrite byte b [], intini, intlen); Escribe len caracteres del vector b.
caracteres.
MODO CARACTER
En Java los caracteres no están restringidos a los ASCII sino son Unicode. Un
carácter está siempre rodeado de comillas simples como 'A', '9', 'ñ', etc. El tipo de
dato char sirve para guardar estos caracteres.
Carácte Secuencia de
r escape
retorno \r
de
carro
tabulad \t
or
horizontal
nueva \n
línea
barra \\
invertida
Además de los ocho tipos de datos primitivos, las variables en Java pueden ser
declaradas para guardar una instancia de una clase, como veremos en el siguiente
capítulo (Clases y objetos).
//imprime un mensaje
}
En una cadena se pueden insertar caracteres especiales como el carácter
tabulador '\t' o el de nueva línea '\n'
archivo.seek(archivo.getFilePointer() –
Modo Bytes:
FileInputStream
Ejemplo
1. try {
2. File file = new File(nombreFichero);
3. InputStream inputStream = new FileInputStream(file);
4. } catch (FileNotFoundException e) {
5. System.out.println("Fichero no encontrado");
6. }
FileOutputStream
Ejemplo
1. try {
2. File file = new File(nombreFichero);
3. OutputStream outputStream = new FileOutputStream(file);
4. outputStream.write(bytes);
5. } catch (FileNotFoundException e) {
6. System.out.println("Fichero no encontrado");
7. } finally {
8. outputStream.close();
9.
10. }
Modo aleatorio
RandomaccessFile
Los métodos que resultan de interés para el acceso aleatorio son los que
permiten acceder a un lugar concreto dentro del archivo y conocer el punto de este
en el que se va a realizar la operación de lectura y/o escritura:
Ejemplo
import java.io.EOFException;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
public class ArchivoAleatorio {
public static void main(String[] args) throws IOException {
char c;
boolean finArchivo = false;
RandomAccessFile archivo = null;
try {
archivo = new RandomAccessFile(“prueba.txt”, “rw”);
System.out.println(“El tamaño es: ” + archivo.length());
do {
try {
c = (char) archivo.readByte();
if (c == ‘i’) {
archivo.seek(archivo.getFilePointer() – 1);
archivo.writeByte(Character.toUpperCase(c));
}
} catch (EOFException eof) {
finArchivo = true;
archivo.close();
System.out.println(“Convertidas a mayusculas”);
}
} while (!finArchivo);
} catch (FileNotFoundException fe) {
System.out.println(“No se encontro el archivo”);
}
}
}