Definición de Archivo Directo
Definición de Archivo Directo
Definición de Archivo Directo
Motivacin:
Definiciones:
Es importante notar que para el sistema operativo todos los archivos pueden ser
accesados directamente. Sin embargo, es muy difcil accesar directamente los archivos
de texto que hemos usado hasta el momento, porque sus lneas tienen largo variable.
Ficheros En C++
Al igual que ocurre con la escritura en pantalla, a la hora de manejar los ficheros desde
C++, podemos emplear las funciones que ya conocamos de C, o bien emplear otras
nuevas posibilidades que aporta C++. Tambin al igual que ocurra con la pantalla, el
manejo de ficheros se basar en flujos de entrada y salida.
1
Universidad Mariano Glvez
Facultad de Ingeniera en Sistemas de Informacin
Y Ciencias de la Computacin
Curso: Programacin I
Cat. Ing. Ilonkka Carolina Cabrera Cintora
escribiremos con << y >>, al igual que para la pantalla. Cerraremos un fichero con
"close" (tanto si lo hemos abierto como para leer o para escribir) y comprobaremos si
se ha terminado un fichero de entrada con "eof".
1: //
2: // fich01.cpp
3: //
4: // Introduccion a C++
5: // Ejemplo de ficheros (escritura)
6: // Probado con BC++ 5.5 FCLT
7: //
8: // Curso de C
9: // Jose Ignacio Cabanes
10: //
11: /////////////////////////////////////////////
12: #include <fstream.h>
13: main()
14: {
15: ofstream fichero("ejemplo.txt");
16: fichero << "Hola" << endl;
17: fichero << "Adios" << endl;
18: fichero.close();
19: }
En un caso general, puede ocurrir que no sepamos el nombre fsico del fichero en el
momento de definir la variable "fichero", sino ms tarde (por ejemplo, porque el
usuario sea el que vaya a teclear el nombre del fichero con el que trabajar, o porque
vaya a escoger dicho nombre en una ventana de dilogo). En ese caso, podemos usar
la funcin miembro "open". Como ejemplo, vamos a leer el fichero que acabamos de
crear:
1: //
2: // fich02.cpp
3: //
4: // Introduccion a C++
5: // Ejemplo de ficheros (lectura)
6: // Probado con BC++ 5.5 FCLT
7: //
8: // Curso de C
9: // Jose Ignacio Cabanes
10: //
11: /////////////////////////////////////////////
12: #include <fstream.h>
13: #include <iostream.h>
14:
2
Universidad Mariano Glvez
Facultad de Ingeniera en Sistemas de Informacin
Y Ciencias de la Computacin
Curso: Programacin I
Cat. Ing. Ilonkka Carolina Cabrera Cintora
15: main()
16: {
17: fstream fichero;
18: char texto[200];
19: // Abro para lectura
20: fichero.open("ejemplo.txt", ios::in);
21: fichero >> texto; // Leo una primera linea
22: while (!fichero.eof()) // Mientras se haya podido leer algo
23: {
24: cout << texto << endl; // Muestro lo que lei
25: fichero >> texto; // Y vuelvo a intentar leer
26: }
27: fichero.close(); // Finalmente, cierro
28: }
La estructura es ligeramente distinta, pero aun as, debera resultar fcil de seguir. Esta
vez, el fichero lo hemos declarado como "genrico", sin especificar si va a ser para
lectura o escritura, de modo que este dato lo indicamos cuando realmente abrimos el
fichero. Los modos de apertura que tenemos disponibles son:
ifstream fichero;
// Abro para lectura
fichero.open("ejemplo.txt");
if (!fichero)
{
cerr << "No se ha podido abrir el fichero." << endl;
exit(1);
}
Estas son las ideas bsicas. Pero hay ms posibilidades, que voy a comentar con
menos detalle, pero prefiero que se sepa que existen, porque pueden ser tiles en
muchos casos. Por ejemplo, podemos leer un bloque de datos de una determinada
longitud, lo que ser til cuando manejemos ficheros binarios, o escribir una serie de
bytes, o leer un dato de un flujo pero sin avanzar de posicin.
Estas son algunas funciones miembro de iostream que nos servirn para cosas como
esas:
3
Universidad Mariano Glvez
Facultad de Ingeniera en Sistemas de Informacin
Y Ciencias de la Computacin
Curso: Programacin I
Cat. Ing. Ilonkka Carolina Cabrera Cintora
Por otra parte, en la clase "fstream" tenemos otras funciones miembro que nos
ayudarn a comprobar errores en la lectura o escritura:
if (!fichero)
{
// No se ha podido abrir el fichero
}
o como
if
(!fichero.get(ch)) {
// No se ha podido leer el siguiente dato.
}
4
Universidad Mariano Glvez
Facultad de Ingeniera en Sistemas de Informacin
Y Ciencias de la Computacin
Curso: Programacin I
Cat. Ing. Ilonkka Carolina Cabrera Cintora
5
Universidad Mariano Glvez
Facultad de Ingeniera en Sistemas de Informacin
Y Ciencias de la Computacin
Curso: Programacin I
Cat. Ing. Ilonkka Carolina Cabrera Cintora
Prog25.cpp
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct {
int clave;
char nombre[30];
int edad;} animalito;
void main() {
clrscr();
//creando y cerrando el archivo en disco
FILE *archdisco;
archdisco = fopen("cpp:\\ac\\archivo1.dat","wb");
fclose(archdisco);
printf("ARCHIVO CREADO");
getchar();getchar();
}
corrida:
Recordar que la estructura que se uso para crear el archivo se debera usar siempre y
con el mismo orden cuando se acceda al archivo con los procesos u operaciones
anteriormente mencionados.
6
Universidad Mariano Glvez
Facultad de Ingeniera en Sistemas de Informacin
Y Ciencias de la Computacin
Curso: Programacin I
Cat. Ing. Ilonkka Carolina Cabrera Cintora
r Lectura.
w Escritura.
a Append, si el archivo ya existe append empieza a aadir los nuevos datos al
final del archivo ya existente.
r+ > Lectura y escritura, ya debe existir el archivo.
w+ > Crea para lectura y escritura y si ya existe, sobreescribe.
a+ > Crea o abre para lectura y append, sino existe el archivo sera creado.
En adicion a los valores listados tambien es permitido agregar uno de los siguientes
caracteres, pero insertandolo antes del signo +
modo significado.
http://www.programacionfacil.com/cpp/creacion_archivos_directos.html
7
Universidad Mariano Glvez
Facultad de Ingeniera en Sistemas de Informacin
Y Ciencias de la Computacin
Curso: Programacin I
Cat. Ing. Ilonkka Carolina Cabrera Cintora
Los archivos son el conjunto organizado de informaciones del mismo tipo, que pueden
utilizarse en un mismo tratamiento; como soporte material de estas informaciones.
8
Universidad Mariano Glvez
Facultad de Ingeniera en Sistemas de Informacin
Y Ciencias de la Computacin
Curso: Programacin I
Cat. Ing. Ilonkka Carolina Cabrera Cintora
9
Universidad Mariano Glvez
Facultad de Ingeniera en Sistemas de Informacin
Y Ciencias de la Computacin
Curso: Programacin I
Cat. Ing. Ilonkka Carolina Cabrera Cintora
Secuenciales: archivo de texto que debe ser ledo del principio hasta el final.
Acceso Directo. Permite procesar o acceder a un elemento determinado y
referencia directamente por su posicin en el soporte de almacenamiento
(Turbo Pascal permite este acceso.
Aleatorios: es un archivo con registros de un mismo largo. Un programa
puede accesar directamente cualquier registro sin tener que leer los
registros previos.
Binarios: es un archivo que lee byte por byte sin asumir ninguna estructura.
Los archivos Binarios no son un nuevo tipo de archivo, pero si una nueva
forma de manipular cualquier tipo de archivo. Las tcnicas de archivo
binarios permiten leer o cambiar cualquier byte de un archivo. Son
herramientas extremadamente potentes, pero como toda herramienta
potente debe manejarse con cuidado
Entre otras caractersticas, a las tcnicas de archivo binario no les preocupa los
caracteres EOF intercalados (Control+Z = Chr$(26)) que pueda tener un
archivo.
10
Universidad Mariano Glvez
Facultad de Ingeniera en Sistemas de Informacin
Y Ciencias de la Computacin
Curso: Programacin I
Cat. Ing. Ilonkka Carolina Cabrera Cintora
"C:\Windows\AddrBook.ini"
{Append| Binary| Input| Outuput| Random} El programador tiene que
seleccionar uno. Binary y Random se utiliza para archivos binarios y
aleatorios. Append, Input y Output son usados con archivos secuenciales.
Un archivo secuencial no puede ser abierto para leer y escribir
simultaneamente. Output es usado para escribir en el archivo. Input es
usado para leer del archivo. Append es usado para colocar data al final de
un archivo exitente.
3) Por ejemplo:
CLOSE #1
WRITE: envia data del programa al archivo secuencial. La estructura
es:
WRITE #filenumber, [OutputList]
4) Por ejemplo:
WRITE #1, UserName, UserCompany, SerialNumber
WRITE es la operacin opuesta al INPUT. Las expresiones en el
OutputList son separadas por comas. WRITE inserta comillas y comas a
la data que envia al archivo.
INPUT: lee data del archivo. La estructura es:
INPUT #filenumber, InputList
5) Por ejemplo:
INPUT #1, UserName, UserCompany, SerialNumber
Declaracin y asignacin de archivos
La declaracin de un archivo con tipo se efecta con la ayuda de las palabras
reservadas file of.
El procedimiento de asignacin es idntico al utilizado anteriormente.
6) Ejemplo:
Type
datos = record
clave : integer;
nombre : string[30];
puesto : string[20];
sueldo : real;
estado : boolean;
{true activo,false baja lgica}
end;
Var
archivo:file of datos;
begin
Assign(archivo,'empleado.dat');
11
Universidad Mariano Glvez
Facultad de Ingeniera en Sistemas de Informacin
Y Ciencias de la Computacin
Curso: Programacin I
Cat. Ing. Ilonkka Carolina Cabrera Cintora
DIRECTORIO JERARQUICO
Los archivos son almacenados por medio de directorios, esta clasificacin
se de acuerdo a la conveniencia del usuario o de la empresa. [ ] .La estructura
tiene una forma de rbol con raz, este mtodo es el ms utilizado debido a que la
revisin o bsqueda se realiza de forma sencilla.
Para accesar a los archivos que se almacenan en un sistema jerrquico, el usuario
debe indicar el o los directorios que se deben recorrer para localizar el archivo
deseado, a esto se le denomina ruta de acceso del archivo. La ruta de acceso
puede ser de dos formas:
Ruta absoluta.- Este tipo de ruta de acceso inicia siempre con una diagonal
invertida [ ]
C:\Edit c:\SOS\sistemas\report.txt
Ruta relativa.- Este tipo de ruta de acceso realiza la bsqueda del archivo en el
directorio de trabajo actual, si el archivo no se localiza aqu, el S.O. lo buscar en
los directorios especificados en el
PATH de un archivo con extensin .BAT.
C:\Edit report.txt
Borrado. Eliminando total del archivo, dejando libre el espacio del soporte que
ocupaba.
12
Universidad Mariano Glvez
Facultad de Ingeniera en Sistemas de Informacin
Y Ciencias de la Computacin
Curso: Programacin I
Cat. Ing. Ilonkka Carolina Cabrera Cintora
Los archivos de registros de longitud fija: son los que almacenan la informacin
en los archivos mediante un encabezado y luego se introducen uno a uno los registros
ubicados en posiciones consecutivas.
Los registros de longitud variable: es el almacenamiento de registros de varios
tipos en un archivo y permite uno o ms campos de longitudes variables y dichos
campos pueden ser repetidos. La longitud de los registros debe estar definida
correctamente para poder leer y escribir de forma efectiva.
13
Universidad Mariano Glvez
Facultad de Ingeniera en Sistemas de Informacin
Y Ciencias de la Computacin
Curso: Programacin I
Cat. Ing. Ilonkka Carolina Cabrera Cintora
Cuestiones de Programacin
Algunos lenguajes de alto nivel cuentan con subttulos para manipular los
archivos de un registro indizado.
Valindose de las subrutinas es posible escribir programas sin tener que
preocuparse por la estructura real del sistema de ndices que se aplique.
14
Universidad Mariano Glvez
Facultad de Ingeniera en Sistemas de Informacin
Y Ciencias de la Computacin
Curso: Programacin I
Cat. Ing. Ilonkka Carolina Cabrera Cintora
5. - DEFINICIONES.
Los ms utilizados en el desarrollo del tema son:
Archivo (Fichero): Conjunto de informacin estructurada en unidades de
acceso denominada registro.
Registros: Estructura de datos formada por uno o ms elementos
denominados "Campos" y estos pueden estar compuestos a su vez por
"subcampos".
Claves: Se denomina a un campo especial del registro que sirve para
identificarlo
Bloque: Es la cantidad de informacin que se transfiere en cada operacin de
lectura o escritura sobre un archivo.
Campo: Es cada uno de los diferentes datos que constituyen un registro lgico.
BIBLIOGRAFIA
1) Estructura de Datos en Pascal, Autor Aarn M. Tenenbaum, Moshe J. Augentein.
Primera edicin.
2) Diseo y Administracin de Base de Datos Gary W. Hansen, James V. Hansen,
Segunda Edicin.
3) Gua de Estructura y Procesamiento de Datos Profesor David Lpez, Segundo
semestre U.N.I.R. (Maracaibo).
4) http://www2.ing.puc.cl/iic1102/materia/cap10.htm
5) http://www.uady.mx/sitios/matemati/enlinea/admin_arch/materiales/material1.h
tml
6) http://coqui.lce.org/cadiaz/CEDU5120V/Contenido/ArchExt.htm
7) http://www.itlp.edu.mx/publica/tutoriales/pascal/u8_8_8.html
15