Академический Документы
Профессиональный Документы
Культура Документы
DESARROLLO
DE SOFTWARE II
Preparado por:
Msc. Ludia B. Gómez de Meléndez.
Departamento de Programación y Análisis
de Sistemas
Capitulo III
FUNDAMENTOS DE ARCHIVO.
III. FUNDAMENTO DE ARCHIVO.
3.1. Definición de Archivos
3.2. Elementos que conforman un archivo
3.2.1. Campos
3.2.2 Registros
3.2.3. Organización
3.3.3.1. Tipos de archivos
3.3.3.2. Tipos de acceso
3.3. Manipulación
3.3.1. Adición
3.3.2 Modificación
3.3.3 Consulta
3.3.4. Eliminación
3.4. Archivos en Java
3.4.1. La clase File
CONTINUACION
3.4.1.1 Constructores
3. 4.1.2. Métodos
3.5. Fundamento de los Flujos de Entrada y Salida para Archivos
3.5.1. Manipulación de Archivos y Manejos de Excepciones
3.5.1.1 Archivos secuenciales
3.5.1.1.1 Flujos de Bytes y encadenamientos
3.5.1.1.2 Flujos de Caracteres y encadenamientos
datos
registros
ORGANIZACIÓN DE UN ARCHIVO.
Se refiere a la forma como se encuentran los registros almacenados en el
archivo. En los archivos de datos se pueden destacar dos organizaciones
fundamentales, la secuencial y la directa o aleatoria.
ACCESO DIRECTO.
Los registros son accesados directamente a través de una clave del 0
a n, es decir, permite posicionarse sobre un registro determinado en
una posición relativa (0 a n) dentro del archivo, sin que sea necesario
recorrer los anteriores.
a) b).
1. CREACION.
Para crear un nuevo archivo se necesita contar con los siguientes
datos:
a). Nombre del archivo: es un nombre de identificador válido
b). Ubicación: indica el lugar donde se ubicará el archivo una vez
creado.
d). Organización del archivo: tipo de organización del archivo.
CREACIÓN ARCH
REGISTROS
ARCHA
Al crear un archivo se puede presentar una serie de errores entre los que
podemos destacar los siguientes:
3. CERRAR ARCHIVOS:
13
III. FUNDAMENTOS DE ARCHIVO.
4. MANIPULACIÓN.
Son las operaciones que sufre el archivo durante su vida, desde su creación
hasta su eliminación o borrado. Involucra operaciones directamente
realizadas sobre uno, algunos o todos los registros del archivo. como lo son:
CONSTRUCTORES.
Los objetos File se crean mediante los siguientes constructores:
Ejemplos de los 3 constructors con los cuales puede trabajar la clase FILE..
if (f5.exists()){
System.out.println("Nombre del archivo "+f5.getName());
System.out.println("Camino "+f5.getPath());
System.out.println("Camino absoluto "+f5.getAbsolutePath());
System.out.println("Se puede escribir "+f5.canRead());
System.out.println("Se puede leer "+f5.canWrite());
System.out.println("Tamaño "+f5.length());
}
Desarrollo de Software III
19
III. FUNDAMENTOS DE ARCHIVO.
3.3. EJEMPLOS DE LA CLASE FILE
if (f3.isFile( ) ){
System.out.println("\n ES UN ARCHIVO \n Nombre del archivo "+f3.getName());
System.out.println("Camino "+f3.getPath());
System.out.println("Camino absoluto "+f3.getAbsolutePath());
System.out.println("Se puede escribir "+f3.canRead());}
else if (f3.isDirectory() )
{
System.out.println("\n ES UN DIRECTORIO \n NOMBRE DEL
DIRECTORIO"+f3.getName());
System.out.println("Camino "+f3.getPath());
System.out.println("Camino absoluto "+f3.getAbsolutePath());
System.out.println("Se puede escribir "+f3.canRead());}
}
}
En este ejemplo vemos al metodo list de la clase File, que permite devolver
un array con los nombres de los archivos y directorios existentes en el
directorio especificado
import java.io.*;
class DirRaiz {
public static void main(String[] args) {
int i;
String bus;
File f3 = new File ("/");//DIRECTORIO RAIZ DE WINDOWS
File f5 = new File (".");// DIRECTORIO ACTUAL
String[] listaArchivos;
listaArchivos =f3.list(); //METODO LIST DE LA CLASE FILE
for( i=0; i<listaArchivos.length; i++){
if (listaArchivos[i].endsWith(".java")) // METODO endsWith VERIFICA SI LA SUBCADENA .java SE
ENCUENTRA EN CADA CADENA
System.out.println(listaArchivos[i]); }
}}
En este ejemplo vemos al metodo list de la clase File, que permite devolver
un array con los nombres de los archivos y directorios existentes en el
directorio especificado import java.io.*;
class DirRaiz {
import java.io.*; public static void main(String[] args) {
public class DirRaiz { int i;
public static void main(String[] args) String bus;
File f3 = new File ("/");//DIRECTORIO RAIZ DE
{ WINDOWS
int i; File f5 = new File (".");// DIRECTORIO ACTUAL
String bus; String[] listaArchivos;
File f3 = new File ("/"); listaArchivos =f3.list(); //METODO LIST DE LA
String[] listaArchivos=f3.list(); CLASE FILE
for( i=0; i<listaArchivos.length; i++){ for( i=0; i<listaArchivos.length; i++){
bus = listaArchivos[i]; if (listaArchivos[i].endsWith(".java")) //
METODO endsWith VERIFICA SI LA SUBCADENA
if ( bus.endsWith(".java")){ .java SE ENCUENTRA EN CADA CADENA
System.out.println(bus); } } System.out.println(listaArchivos[i]); }
}} }}
import java.io.*;
class Directorio {
// File f1 = new File ("C:/Users/Ludia/PRIMERSEMESTRE2017/marcacion.txt");
// Indica ruta absoluta, el directorio raíz en windows para el archivo
marcacion.txt
File f1;
Directorio (){
f1 = new File ("carta.txt");// Ruta relativa donde se encuentra la aplicación
}
public String buscar () {
String resp= "";
if(f1.exists()){
resp = resp + "Nombre del archivo "+f1.getName()+"\n";
resp = resp + "Camino "+f1.getPath()+"\n" ;
Por lo cual las clases base de la librería son InputStream y Reader para
lectura, y OutputStream y Writer para escritura, como se resume en la
tabla #1
Los archivos de organización secuencial en Java pueden ser de tipo texto (.txt) o
de datos (.dat) y sólo permiten el acceso secuencial de registros. Además este
tipo de archivo no puede abrirse simultáneamente para lectura y escritura (R/W).
Las subclases de Reader y de Writer que permiten abrir, crear, escribir, leer
o cerrar un archivo estableciendo un flujo de caracteres, son la FileReader y
FileWriter. A continuación presentaremos estas subclases
Al momento de manipular a los archivos se pueden realizar procesos tales
como:
Apertura
Lectura o escritura
y por último deben ser cerrados.
35
MANIPULACIÓN DE ARCHIVO SECUENCIALES
Y MANEJO DE EXCEPCIONES.
MODO DE APERTURA.
Utilizaremos a la clase Reader y dentro de ella a la subclase FileReader los
objetos instanciados de esta clase representan archivos de texto o datos de
sólo lectura que se acceden de forma secuencial.
Pasos a seguir:
Se crea el objeto de la clase FileReader llamando al constructor, al que se
le pasa el nombre del archivo o bien el objeto de la clase File .
Formatos:
public FileReader(File nombre_objeto) throws FileNotFoundException
LECTURA.
Se lee mediante read los caracteres del flujo de entrada, hasta llegar
al final (la función read devuelve entonces -1), y se escribe dichos
caracteres en el flujo de salida mediante println o write si va a un
dispositivo de almacenamiento. Cuando hace lecturas recuerde
controlar excepciones de IOException en este proceso.
while((c=archa.read())!=-1){
sal= sal + (char) c;}
EJEMPLO:
void cerrar()
{ try {archa.close();}
catch (IOException e)
{ throw e; } }
APERTURA.
En la apertura se pueden utilizar los siguientes constructores:
LECTURA y ESCRITURA.
Se lee mediante read los caracteres del flujo de entrada, hasta llegar al
final (la función read devuelve entonces -1), y se escribe dichos
caracteres en el flujo de salida mediante write.
while((c=entrada.read())!=-1)
{ salida.write(c);
CIERRE. }
Finalmente, se cierran ambos flujos llamando a sus respectivas funciones
close en bloques try ... catch
archa.close();
salida.close();
46
MANIPULACIÓN DE ARCHIVO SECUENCIALES Y
MANEJO DE EXCEPCIONES.
void cerrar() throws Exception
{ try {archa.close();
salida.close();}
catch (IOException e)
{ throw e; }
} }
class Grabar { public static void main(String [] args) throws IOException {
try {
GrabarFlujoByte obj = new GrabarFlujoByte();
obj.leer();
obj.cerrar();}
catch (Exception e){
System.out.println ("ERROR DE ENTRADA/SALIDA"+e);
} } }
El método readLine(), devuelve null, de esta forma podemos preguntar por este
valor para controlar el fin del archivo. Este método lanza una IOException en
caso de un error al leer.
boolean leer () throws Exception
{ boolean fin = false;
try
{ced=e.readLine ();
nom=e.readLine();
edad=e.readLine ();
// para controlar fin de archivo se verifica si el registro es null
if (ced == null & nom == null & edad == null)
fin = true; }
catch (IOException e)
{throw e; }
return fin; }
String traer()
{ return ced;
}
51
ENCADENAMIENTO DE FLUJOS DE
CARACTERES
ENCADENAMIENTO DE LA FILEWRITER Y LA PRINTWRITER.
Esta clase actúa como filtro envolviendo un flujo de salida para así permitir la
escritura( CREAR UN ARCHIVO). Los objetos instanciados a este
encadenamiento representan archivos de sólo escritura que se acceden de
forma secuencial
APERTURA.
Para abrir un archivo con encadenamiento de la FileWiter y la PrintWriter se
hace de la siguiente forma:
FileWriter f;
PrintWriter s;
CIERRE.
El cierre funciona igual al explicado con el encadenamiento de la
FileReader y la BufferedReader.
Esta clase actúa como filtro envolviendo un flujo de salida para así permitir la
escritura (CREAR UN ARCHIVO). Los objetos instanciados a este
encadenamiento representan archivos de sólo escritura
APERTURA
Para abrir un archivo con encadenamiento de la FileWiter y la BufferedWriter se
hace de la siguiente forma:
FileWriter f;
BufferedWriter s;
ESCRITURA.
La escritura se puede hacer con los métodos siguientes:
2. Se requiere un programa para leer cada uno de los datos del archivo
“datosMet.dat” e imprimir los mismos. Además deberá mostrar cual es la mínima
y máxima temperatura.
3. Escribe una clase que lea 10 enteros y los escriba en un archivo “salida1.txt
4. Escribe una clase que lea del archivo “salida1.txt” los 10 números enteros; los
eleve al cuadrado, y guarde los resultados en “salida2.txt”.
5. Escribe una clase que lea del archivo “salida2.txt” los 10 números enteros y
los despliegue en pantalla y determine el máximo y mínimo de los mismos.