Sunteți pe pagina 1din 27

INSTITUTO TECNOLGICO SUPERIOR DE LERDO

Ensayo: Uso de archivos secuenciales en diferentes lenguajes

Nombre: Miguel ngel Gaytn Gmez

Materia: Administracin de datos

Especialidad: Ingeniera en Informtica

Profesor: Ricardo de Jess Bustamante Gonzlez

A viernes 17 de febrero de 2012, Cd. Lerdo, Durango.

Uso de archivos secuenciales en C#:


Lectura y Escritura de Archivos. Existen dos formas de obtener flujos (streams) que conectan a un archivo, uno utilizando la clase FileStream, la cual provee un control total sobre el acceso de archivos, incluyendo modo de acceso, compartido y buffering. La entrada/salida (E/S) en C# est organizada alrededor del concepto de stream, el cual puede corresponder a un canal de comunicacin y ser aplicado a escritura y lectura de de ficheros en disco. Para empezar, el espacio de nombres donde se encuentran la mayora de las clases de entrada salida se llama, sin demasiada imaginacin, System.IO; es necesario incluirlo. De ah se sacan clases como FileStream, un stream para escribir en fichero. Este es un fichero sin estructura, que se puede leer, en principio, de forma secuencial. Para abrirlo, hay que pasarle al constructor de la clase, adems del nombre de fichero: y el modo de apertura: FileMode.Open, en este caso; hay otros modos de apertura que incluyen Append para aadir y OpenOrCreate, que creara un fichero si no existe, y el tipo de acceso: en este caso es acceso para leer, pero otros modos de acceso incluyen de escritura o combinado de lectura/escritura (ReadWrite), y el modo de compartir: FileShare.Read indica una especie de cerrojo en el fichero, que permite a otros procesos abrirlo para leer, pero no para escribir. Hay otros modos de compartir, por ejemplo, None no permitira a ningn otro recurso usar el fichero abierto Es una forma un tanto prolija de abrir un fichero, por eso hay formas ms simples: la clase tiene constructores que permiten especificar slo uno de los tres parmetros, y usar los valores por defecto de los otros dos, por ejemplo: FileStream = newFileStream (name, FileMode.OpenOrCreate ); En este caso se abrira un fichero (o se creara si no existiera) con acceso de lectura y escritura, y con modo Read de comparticin de recursos. Una vez abierto el fichero, es cuestin de leerlo; como el fichero no tiene estructura, lo ms fcil es irlo leyendo byte a byte, y presentndolo en pantalla (o cualquier otra cosa un poco ms seria que queramos hacer). La lectura se realiza en un bucle while, que lee mientras que la longitud Length del canal es mayor que la posicin Position del cursor de lectura. Cada byte se lee usando ReadByte(), una funcin sin parmetros que devuelve el byte situado en el cursor de lectura en el canal.

Se puede cambiar este fichero a una lectura con buffer, que tericamente es ms eficiente, pero no porque sea ms rpida, sino porque es ms buena persona con el resto de los recursos del sistema: hace menos llamadas al sistema operativo, porque la lectura la hace a travs de lecturas de bloques de bytes:
using System; using System.IO; public class file1a { public static void Main ( string[] args ) { FileStream s2 = new FileStream(args[0], FileMode.Open, FileAccess.Read, FileShare.Read); BufferedStream bs = new BufferedStream( s2 ); while ( bs.Length > bs.Position ) { Console.Write( (char) bs.ReadByte() ); } } }

Sin embargo, hay una forma ms eficiente todava de leer ficheros de texto, y es suponer que efectivamente se trata de ficheros de texto. Lo hacemos en el siguiente ejemplo:
using System; using System.IO; public class file2 { public static void Main ( string[] args) { StreamReader lector=File.OpenText(args[0]); string linea; do { linea = lector.ReadLine(); if ( linea != null ) { Console.WriteLine( linea ); } } while( linea !=null); lector.Close(); } }

A continuacin se muestra un ejemplo donde, cada vez que el programa es ejecutado se sobrescribe el contenido del archivo en caso de que este exista, si no existe se crea:
using System; using System.IO; class App{ public static void Main(){ FileStream f = new FileStream("nuevo.txt", FileMode.Create);

StreamWriter s = new StreamWriter(f); for(int iNumberLine = 1; iNumberLine <= 10; iNumberLine++){ s.WriteLine("Linea " + iNumberLine); } s.Close(); f.Close(); } }

Salida, Archivo Nuevo.txt cuyo contenido es:


Linea Linea Linea Linea Linea Linea Linea Linea Linea Linea 1 2 3 4 5 6 7 8 9 10

Uso de archivos secuenciales en PHP:

El tratamiento de archivos resulta ser una prctica muy comn en cualquier sitio web. Muy a menudo nos vemos en la necesidad de procesar un texto para cambiarle el formato, buscar una cadena en su interior o cualquier otro tipo de operacin. PHP propone un sinfn de funciones para la gestin de archivos que van desde las ms elementales de apertura, lectura y cierre a otras ms rebuscadas como el clculo de espacio en el disco duro, tamao del archivo, gestin de derechos de acceso, etc. En este artculo pretendemos mostrar cules son las funciones ms esenciales para el tratamiento de archivos para posteriormente ejemplificarlas en un par de scripts que nos pueden resultar tiles:

Funciones de gestin de archivos


Funcin copy rename unlink Descripcin Copia un archivo Cambia el nombre del archivo de $antes a $despues Borra el archivo Sintaxis copy($origen,$destino) rename($antes,$despues) unlink($archivo)

Funciones para la lectura de archivos


Funcin fopen fgets fwrite fseek feof Descripcin Sintaxis Abre un archivo y le asigna un identificador id. Veremos el modo ms $id = Fopen($archivo, $modo) adelante Lee una lnea de un archivo hasta un numero mximo de caracteres Escribe una cadena dentro del archivo Avanza o retrocede el puntero del archivo un cierto numero de posiciones Comprueba si el puntero que lee el archivo ha llegado al final fgets($id,$max) fwrite($id, $cadena) fseek($id,$posiciones) feof($id) fpassthru($id) fclose($id)

fpassthru lee completamente el archivo y lo muestra fclose Cierra el archivo abierto previamente

Las operaciones ms elementales, copia, borrado y cambiar el nombre, requieren nicamente el nombre (y path) del archivo sobre el cual se ejerce la operacin.

Para operaciones ms complejas, como la lectura de lneas o la escritura de texto dentro del archivo, se requiere de una previa apertura del archivo al cual le asignaremos un identificador $id. Una vez abierto el archivo, podremos desplazarnos a lo largo de l por medio de un puntero imaginario que avanza o retrocede por las lneas de texto y mediante el cual nos situaremos en el lugar escogido para insertar, modificar o simplemente copiar una cadena. Existen distintos modos de apertura que nos permiten definir las acciones que podemos realizar sobre el archivo. Aqu mostramos los diferentes modos que, como vemos, son de lo ms variado: Modos de apertura de archivos
Sintaxis 'r' 'r+' 'w' 'w+' 'a' 'a+' Slo lectura Lectura y escritura Slo escritura Lectura y escritura. Suprime el contenido anterior si se escribe. El archivo es creado si no existe. Slo escritura. El archivo es creado si no existe y el puntero se coloca al final. Lectura y escritura. El archivo es creado si no existe y el puntero se coloca al final. Descripcin

Para poder abrir un archivo utilizamos la funcin fopen y posteriormente para leer el contenido de un archivo se realiza mediante la funcin fgets, esta funcin se encarga de leer lnea a lnea el contenido de un archivo texto por lo que su utilizacin ha de ser incluida dentro de una estructura de tipo bucle. En el ejemplo que mostramos a continuacin nos hemos servido de esta lectura secuencial para localizar dentro del texto una cadena cualquiera a la que, a continuacin, le cambiamos el formato para ponerla en negrita por medio de la etiqueta <b>. Esto nos puede resultar til si llevamos a cabo bsquedas internas en nuestro sitio y queremos resaltar la cadena de bsqueda en el texto de la pgina encontrada. Evidentemente, la utilidad de fgets resulta ser mucho ms amplia. Podemos emplearla, por ejemplo, con archivos remotos para extraer las etiquetas meta o para muchas otras cosas que se nos puedan ocurrir. A continuacin se presenta el script:

<? function negrita($path,$cadena) {

//Iniciamos la variable $texto = ""; //Abrimos el archivo en modo lectura $fp = fopen($path,"r"); //Leemos linea por linea el contenido del archivo while ($linea= fgets($fp,1024)) { //Sustituimos las ocurrencias de la cadena que buscamos $linea = str_replace($cadena,"<b>$cadena</b>",$linea); //Anadimos la linea modificada al texto $texto .= $linea; } return $texto; } //Definimos el path y la cadena $path="escribe el camino de acceso a tu archivo"; $cadena = "escribe tu cadena"; //Llamamos la funcion $texto = negrita ($path,$cadena); //Mostramos el texto echo $texto; ?>

En este ejemplo se analiza la bsqueda de un registro o rengln determinado. En este proceso el usuario del programa quiere que se despliegue un y solo un registro de informacin proporcionando un dato de bsqueda generalmente la clave del registro. Ejemplo:
<HTML> <FORM ACTION=prog21.php METHOD=post> DAME CLAVE A BUSCAR:<INPUT TYPE=text NAME=CLAVE><BR> <INPUT TYPE=submit NAME=OK VALUE="busqueda"><BR> </FORM></HTML> <?php if ($OK == "busqueda") { // abriendo archivo $archivo=fopen('alumnos.dat','a+'); // empezando una tabla html para desplegar echo "<HTML><TABLE Border=10 CellPadding=5><TR>"; echo"<th bgcolor=Green>CLAVE</th><th bgcolor=White>NOMBRE</th><th bgcolor=Red>EDAD</th><th bgcolor=YellowRed>ESTATURA</th></TR>"; // leyendo el archivo while (!feof($archivo)){

$clave=fgets($archivo); $nombre=fgets($archivo); $edad=fgets($archivo); $estatura=fgets($archivo); // convirtiendo al mismo tipo settype($clave,"integer"); // settype($CLAVE,"integer"); if ( $CLAVE == $clave){ // desplegando en celda de tabla html echo"<tr>"; echo "<td>".$clave."</td>"; echo "<td>".$nombre."</td>"; echo "<td>".$edad."</td>"; echo "<td>".$estatura."</td>"; echo"</tr>";}; }; // cerrando archivo y la tabla html echo "</table>"; fclose($archivo); }; ?>

Recordar que la caracterstica principal de un archivo secuencial, es que no es posible acceder o accesar a un registro o rengln especifico o determinado sino que se deber recorrer todos los n-1 renglones anteriores. Esta situacin se da porque al construir un registro cualquiera con un montn de campos strings a la hora de almacenar dichos registros, estos registros tendrn tamaos diferentes, esta es la razn principal por la cual al buscar un registro especfico se tiene que recorrer y validar todos los registros anteriores. En el programa ejemplo se est usando un ciclo while (!eof(ARCHIVO)) para recorrer todos los registros del archivo (eof=end of file), por supuesto que si se tiene un archivo con 5000 registro y el buscado es el 4500 al menos se tendr que recorrer todos los 4499 registros anteriores.

Uso de archivos secuenciales en Java:

Existen adems muchas otras operaciones asociadas a archivos las mas elementales son: 1.- Creacin de Archivo.- En este proceso se pretende solamente crear un archivo nuevo en disco, con su nombre, tipo y especialidad de almacenamiento de datos apropiado. 2.- Apertura de Archivos.- En este caso se pretende abrir un archivo ya existente en disco para procesarlo, ya sea cargar o grabar datos en sus registros, o leer algun registro en especial para mandarlo a una variable de cualquier tipo. No confundir creacin con apertura creacin es un proceso que solo se ejecuta una sola vez en la vida de un archivo, mientras que apertura siempre se esta realizando por los programas especializados en algun proceso. 3.-Cierre de archivos: Es la operacin mas importante en cualquier programa que maneje archivos o se cierra el archivo como ultima instruccin del pograma o se vera el anuncio ABORT,RETRY,FAIL. 4.-Altas en archivo.- En este proceso se carga una clase en memoria con sus datos pertinentes y se graba la clase en el archivo en disco. 5.-Lectura de archivo.- En este proceso, se abre el archivo y se manda el registro de disco, a una clase en memoria para su procesamiento. 6.- Consulta de archivos: En este proceso se pretende desplegar todos los registros del archivo en disco a la pantalla ya sea consola o mejor an, a una pagina html 7.-Busqueda en archivos: Una de las operaciones mas comunes, consiste en que el usuario pide toda la informacin de algun renglon en disco, porporcionando la informacin de algun campo, generalmente el campo clave de la clase. 8.- Filtros.- En este proceso el usuario esta interesado en algun conjunto de renglones con caracteristicas comunes (condicin), por ejemplo todos los alumnos de sistemas, o todos los empleados que ganen mas de $500.00 pesos, o todos los clientes que sean de tijuana, etc 9.-Modificaciones de registros o archivos: Problema muy comun, donde los datos originales ya grabados se tienen que cambiar o actualizar, por ejemplo el nombre no era juan es juana, o la calificacin no es 100 es 20, etc. 10.- Bajas de registros: tambien muy comun este proceso por ejemplo el alumno ya egreso, el cliente huyo, etc. Grabacin de archivos secuenciales en Java:

Grabacin y lectura son los dos procesos mas comunes con archivos en cualquier lenguaje de programacin. Cdigo de grabacin:
import java.lang.*; import java.io.*; class prog22 { public static void main(String[] args) { // crear un objeto de tipo archivo DataOutputStream archivo = null; // creando e inicializando los campos del registro // observar que se debe usar clases numericas apropiadas int clave=0; String nombre=new String(""); int edad=0; // creando objeto teclado BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); // abriendo archivo, capturando y grabando datos try { //* Creando y grabando a un archivo, esta larga la instruccin*/ archivo = new DataOutputStream( FileOutputStream("c:\\pfacil\\archivo1.dat",true) ); System.out.println("dame clave: "); clave = Integer.parseInt(teclado.readLine()); System.out.println("dame nombre: "); nombre=teclado.readLine(); System.out.println("dame edad: "); edad = Integer.parseInt(teclado.readLine()); //grabando al archivo archivo.writeInt(clave); archivo.writeUTF(nombre); new

archivo.writeInt(edad); archivo.close(); } catch(FileNotFoundException fnfe) { /* Archivo no encontrado */ } catch (IOException ioe) { /* Error al escribir */ } } // cierra main } // cierra clase

Lectura de archivos secuenciales en Java: El proceso de lectura de los registros de un archivo secuencial es realmente sencillo, como lo muestra el siguiente cdigo ejemplo:
import java.lang.*; import java.io.*; class prog23 { public static void main(String[] args) { // crear un objeto de tipo archivo DataInputStream archivo = null; // creando e inicializando los campos del registro // observar que se debe usar clases numericas apropiadas int clave=0; String nombre=new String(""); int edad=0; try{ //* abriendo archivo para lectura */ archivo = new DataInputStream( new FileInputStream("c:\\pfacil\\archivo1.dat") ); //leyendo archivo while (true) { clave=archivo.readInt();

System.out.println(clave+" "); nombre=archivo.readUTF(); System.out.println(nombre+" "); edad=archivo.readInt(); System.out.println(edad+" "); System.out.println('\n'); } } catch(FileNotFoundException fnfe) { /* Archivo no encontrado */ } catch (IOException ioe) { /* Error al escribir */ } // cerrar archivo archivo.close(); } // cierra main } // cierra clase

Bsqueda de archivos secuenciales en Java: El primer proceso para un archivo secuencial es agregar una cantidad indefinida de registros al archivo este proceso se resuelve o ejecutando una cantidad indeterminada de veces el programa de grabacin ya hecho o incluir un ciclo while en el mismo programa. Un segundo proceso tambin comn, llamado consulta es desplegar todos los registros del archivo a la vez problema tambin resuelto en el programa de lectura. El tercer Proceso que resolvemos en este tema es la bsqueda de un registro determinado, en este proceso el usuario del programa quiere que se despliegue un y solo un registro de informacin, proporcionando un dato de bsqueda, generalmente la clave del registro. La solucin es sencilla, solo tenemos que abrir el archivo para lectura, hacer un ciclo while (true) condicionar y solo desplegar el registro cuando se cumpla la condicin. Cdigo:
import java.lang.*; import java.io.*; class prog24 {

public static void main(String[] args) { // crear un objeto de tipo archivo DataInputStream archivo = null; //variables int clave=0; int clavebuscar=0; String nombre=""; int edad=0; // capturando clave a buscar // creando un objeto llamado teclado especializado en capturas BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); // capturando datos try { System.out.println("dame Clave a buscar: "); clavebuscar = Integer.parseInt(teclado.readLine()); } catch(IOException variablerror) {System.out.println("error de captura "); } //* abriendo archivo para lectura */ try{ archivo = new DataInputStream( new FileInputStream("c:\\pfacil\\archivo1.dat") ); //leyendo archiv while (true) { clave=archivo.readInt(); nombre=archivo.readUTF(); edad=archivo.readInt(); if (clavebuscar==clave){ System.out.println(clave+" "); System.out.println(nombre+" "); System.out.println(edad+" ");

System.out.println('\n');}; }; } catch(FileNotFoundException fnfe) { /* Archivo no encontrado */ } catch (IOException ioe) { /* Error al escribir */ } // cerrar archivo archivo.close(); } // cierra main } // cierra clase

Filtros o condiciones de archivos secuenciales en Java: Como su nombre lo indica en este proceso se pretende desplegar todo un conjunto de renglones que cumplan con la condicin por ejemplo se pide desplegar todos los alumnos de sistemas o todos los empleados que sean de Sinaloa, etc. Filtros se usan para obtener informacin acerca de un subconjunto de renglones del archivo. Cdigo:
import java.lang.*; import java.io.*; class prog25 { public static void main(String[] args) { // crear un objeto de tipo archivo DataInputStream archivo = null; //variables int clave=0; String nombre=""; int edad=0; int edadfiltro=0; // capturando condicion // creando un objeto llamado teclado especializado en capturas BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));

// capturando datos try { System.out.print("EDAD >= : "); edadfiltro = Integer.parseInt(teclado.readLine()); } catch(IOException variablerror) {System.out.println("error de captura "); } //* abriendo archivo para lectura */ try{ archivo = new DataInputStream( new FileInputStream("c:\\pfacil\\archivo1.dat") ); //leyendo archivo while (true) { clave=archivo.readInt(); nombre=archivo.readUTF(); edad=archivo.readInt(); if (edad >= edadfiltro){ System.out.print(clave+" "); System.out.print(nombre+" "); System.out.print(edad+" "); System.out.print('\n');}; }; } catch(FileNotFoundException fnfe) { /* Archivo no encontrado */ } catch (IOException ioe) { /* Error al escribir */ } // cerrar archivo archivo.close(); } // cierra main } // cierra clase

Baja o eliminacin de un archivo secuencial en Java: Eliminar o dar de baja en un archivo secuencial, implica tener que estar procesando dos archivos a la vez, el segundo de ellos es un archivo temporal, un algoritmo de eliminacin fsica quedara como:

Procedimiento: 1.- Abrir el archivo original en modo lectura. 2.- Abrir un archivo llamado temporal en modo escritura. 3.- Iniciar un ciclo de lectura del archivo original. 3a.- Dentro del ciclo leer el primer registro. 3b.- Validar el registro si no es eliminable, se escribe al archivo temporal. 3c.- Fin de ciclo (cerrar el ciclo). 4.- Cerrar ambos archivos. 5.- eliminar el archivo original. 6.- renombrar el archivo temporal con el nombre de archivo original. Una segunda tcnica, consiste en agregar un campo de estado (status) al registro, tal como se vio en el curso anterior: Sin embargo el proceso de baja se tiene que realizar en un sistema de informacin, para resolver este problema la respuesta es agregar un campo especial llamado status que puede ser de tipo char, con algunos caracteres de control que se puedan cargar en el por ejemplo una 'a' significa que est en alta, una 'b' significa que est en baja, etc. Lo unico que se tiene que hacer, es que cuando se agrega o manda el registro por primera vez a disco, mandarlo cargado el campo de status con 'a' y estar validando con if siempre este campo en cualquier proceso de bsqueda o condicin o despliegue, si se encuentra cargado con 'b' entonces solo avisar al usuario que est de baja dicho registro.

Operaciones con campos Java: Solo usar los dos archivos el original y el temporal y antes de grabarse al temporal hacer la operacin correspondiente, como lo muestra el siguiente ejemplo:
import java.lang.*;

import java.io.*; class prog27 { public static void main(String[] args) { // crear un objeto de tipo archivo DataInputStream archivo = null; DataOutputStream archtemp = null; //variables int clave=0; String nombre=""; int edad=0; try { //creando archivo temporal archtemp = new DtaOutputStream( FileOutputStream("c:\\pfacil\\temporal.dat",true) ); new

archivo = new DataInputStream( new FileInputStream("c:\\pfacil\\archivo1.dat") ); //leyendo archivo while (true) { clave=archivo.readInt(); nombre=archivo.readUTF(); edad=archivo.readInt(); // sumando +10 a las edades edad=edad+10; //grabando al archivo temporal archtemp.writeInt(clave); archtemp.writeUTF(nombre); archtemp.writeInt(edad); } } catch(IOException variablerror) { } try { // cerrar archivos

archivo.close(); archtemp.close(); // eliminando original renombrando temporal File file1 = new File("c:\\pfacil\\archivo1.dat"); File file2 = new File("c:\\pfacil\\temporal.dat"); if (file1.exists()) {file1.delete();}; file2.renameTo(file1); // avisando System.out.println("EDADES + 10"); } catch(IOException variablerror) {System.out.println("ERROR "); } } // cierra main } // cierra clase

Edicin o modificacin de archivos secuenciales en Java: Editar registros significa cambiar el contenido de algunos de los campos o columnas por nueva informacin o para corregir algn error de captura original o para agregar alguna columna que no exista por modificacin de la tabla o la base de datos. La solucin es similar a los temas anterior, es decir se ocupan los dos archivos el original y el temporal y ya sea que se modifique una sola clave o se modifiquen todos los registros, el ejemplo que se construye va mostrando los registros del archivo y pregunta y modifica o edita el registro pedido. Cdigo:
import java.lang.*; import java.io.*; class prog28 { public static void main(String[] args) { // crear un objeto de tipo archivo DataInputStream archivo = null; DataOutputStream archtemp = null; //variables int clave=0;

String nombre=""; int edad=0; char opcion ='n'; // creando objeto teclado BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); try { //creando archivo temporal archtemp = new DataOutputStream( FileOutputStream("c:\\pfacil\\temporal.dat",true) ); new

archivo = new DataInputStream( new FileInputStream("c:\\pfacil\\archivo1.dat") ); //leyendo archivo while (true) { clave=archivo.readInt(); System.out.print(clave+" "); nombre=archivo.readUTF(); System.out.print(nombre+" "); edad=archivo.readInt(); System.out.print(edad+" "); System.out.print('\n'); System.out.print("editar s/n :"); opcion=(teclado.readLine()).charAt(0); if(opcion=='s'){ System.out.print("dame nuevo nombre: "); nombre=teclado.readLine(); System.out.print("dame nueva edad: "); edad = Integer.parseInt(teclado.readLine()); }; //grabando al archivo temporal archtemp.writeInt(clave);

archtemp.writeUTF(nombre); archtemp.writeInt(edad); } } catch(IOException variablerror) { } try { // cerrar archivos archivo.close(); archtemp.close(); // eliminando original renombrando temporal File file1 = new File("c:\\pfacil\\archivo1.dat"); File file2 = new File("c:\\pfacil\\temporal.dat"); if (file1.exists()) {file1.delete();}; file2.renameTo(file1); // avisando System.out.println("YA SE EDITO"); } catch(IOException variablerror) {System.out.println("ERROR "); } } // cierra main } // cierra clase

Uso de archivos secuenciales en XML:

Se refiere al procesamiento de los registros, no importa el orden en que se haga, para eso los registros estn organizados en forma de una lista y recuperarlos y procesarlos uno por uno de principio a fin.

Rudimentos de los archivos Secuenciales; dependiendo del dispositivo de almacenamiento utilizado el archivo se puede mostrar el usuario como si fuera un sistema secuencial. Al finalizar un archivo secuencial se denota con una marca de fin de archivo. (End end-of-file) El usuario de un archivo secuancial puede ver los registros en un orden secuancial simple. La nica forma de recuperar registros es comenzar al principio y extraerlos en el orden contemplado.
< xml="true" ns="urn:schemas-microsoft-com:office:office" prefix="o" namespace="">

Los archivos secuenciales se denominan de esta manera por que la forma de escribir y leer los datos en un archivo es, desde el principio hasta el fin del archivo, es decir, si yo quisiera acceder a un determinado dato del archivo y este dato se encuentra en la mitad del archivo, para llegar a ese dato necesito pasar por todos los dems datos, de forma secuencial. Por lo general se suelen utilizar los archivos secuenciales, para trabajar con archivos que contengan una estructura de datos no muy compleja. Append: esta sentencia se utiliza para agregar informacin a un archivo de texto. Input: la sentencia Input se utiliza para leer datos de un archivo de texto, lee todo el contenido del archivo de una sola ves. Output: esta sentencia se utiliaza para crear un archivo de texto y grabar datos. sentencia Write: escribe datos en un archivo separados por comas. Line Input: lee un archivo de texto lnea por lnea. Print : para escribir datos en archivos de texto.tos en archivos de texto. EJEMPLO: LO QUE HACE ESTE EJEMPLO ES LEER UN ARCHIVO DE TEXTO Y CUENTA LAS LINEAS DE EL MISMO TEXTO:

*Ponemos un command Button al formulario y a este le agregamos el cdigo as:

*Le ponemos otro command Button que es el de salir con su respectivo cdigo que es end Este es el cdigo que ponemos en el command contar: Public Funtion Contar_Lineas (ByVal srtTextFile As string) As Long< xml="true" ns="urn:schemas-microsoft-com:office:office" prefix="o" namespace="">

Dim f As Integer Dim lineas As Long Dim srt_Linea As String

Nmero de archivo libre F = FreeFile

Abre el archive de texto lnea por lnea hasta el final Do Lee una lnea Line input #f, srt_linea

Incrementa la cantidad de lneas ledas Lineas = lineas + 1 Leera hasta que llegue al fin de archivo Loop While not EOF(F) Cierra el archive de texto abierto Close #f Retorna a la funcin el nmero de lneas del fichero Contar_lineas = lineas

End Function

Private Sub Command1_Click( )

Dim Path As String Path = InputBox( Ingrese la ruta de un archivo de texto ,_ contar lineas ) If Path = vbNullString Then Exit sub

MsgBox cantidad de lineas : & contra_lineas(path)

End Sub

Uso de archivos secuenciales en Delphi XE

La creacin de un archivo secuencial de transacciones incluye la tarea de recolectar datos, convertir los datos a una forma legible para la mquina, editar los datos, convertir los movimientos rechazados y ordenar los datos editados. Es un sencillo ejemplo que te ayudar a entender cmo se manejan los archivos secuenciales en Delphi. Aqu est el cdigo fuente:
DELPHI: 1. unit Unit1; 2. 3. interface 4. 5. uses 6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7. Dialogs, StdCtrls; 8. 9. type 10. TForm1 = class(TForm) 11. Memo: TMemo; 12. archivo: TEdit; 13. Button1: TButton; 14. Button2: TButton; 15. Button3: TButton; 16. Button4: TButton; 17. Label1: TLabel; 18. Label2: TLabel; 19. Label3: TLabel; 20. Label4: TLabel; 21. Label5: TLabel; 22. Label6: TLabel; 23. letras: TLabel; 24. digitos: TLabel; 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. blancos: TLabel; caracteres: TLabel; consonantes: TLabel; vocales: TLabel; procedure procedure procedure procedure Button4Click(Sender: Button3Click(Sender: Button1Click(Sender: Button2Click(Sender: TObject); TObject); TObject); TObject);

private { Private declarations } public { Public declarations } end;

39. var 40. Form1: TForm1; 41. 42. implementation 43. 44. {$R *.dfm} 45. 46. procedure TForm1.Button4Click(Sender: TObject); 47. begin 48. form1.close 49. end; 50. 51. procedure TForm1.Button3Click(Sender: TObject); 52. begin 53. archivo.Text:=''; 54. letras.caption:=''; 55. digitos.caption:=''; 56. blancos.caption:=''; 57. caracteres.caption:=''; 58. vocales.caption:=''; 59. consonantes.caption:=''; 60. memo.Text:=''; 61. memo.SetFocus; 62. end; 63. 64. procedure TForm1.Button1Click(Sender: TObject); 65. begin 66. memo.Lines.LoadFromFile(archivo.text); 67. end; 68. 69. procedure TForm1.Button2Click(Sender: TObject); 70. var 71. l,d,b,v,c,ce,a,band:integer; 72. x:char; 73. begin 74. l:=0; 75. d:=0; 76. b:=0; 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. v:=0; c:=0; ce:=0; a:=0; while a<>length(memo.Text) do begin band:=0; a:=a+1; x:=memo.text[a];

87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125.

if x in ['A'..'Z','a'..'z','','','','','','','','','','','',''] then begin l:=l+1; band:=1; end; if x in ['0'..'9'] then begin d:=d+1; band:=1; end; if x=' ' then begin b:=b+1; band:=1; end; if x in ['a','e','i','o','u','A','E','I','O','U','','','','','','','','','',''] then begin v:=v+1; band:=1; end; if band=0 then ce:=ce+1; end; letras.caption:=inttostr(l); digitos.caption:=inttostr(d); blancos.caption:=inttostr(b); vocales.caption:=inttostr(v); consonantes.caption:=inttostr(l-v); caracteres.caption:=inttostr(ce); end; end.

Bibliografa:
http://www.mitecnologico.com/Main/EstructuraArchivosOrganizacionSecuencial

http://geneura.ugr.es/~jmerelo/tutoriales/csharp/ http://www.recursosdelweb.com/como-leer-archivos-secuenciales-en-delphi/ http://prograweb.com.mx/pweb/0310Archivos.html http://casidiablo.net/uso-del-objectoutputstream-java/ http://www.canalvisualbasic.net/manual/manual-visual-basic/acceso-datos/ http://www.monografias.com/trabajos28/ficheros-delphi/ficheros-delphi.shtml

S-ar putea să vă placă și