manejo de archivos secuenciales
DESCRIPTION
Resumen con ejemplos de código para el manejo de archivos secuenciales en diversos lenguajes de programaciónTRANSCRIPT
INSTITUTO TECNOLOGICO SUPERIOR DE LERDO
Nombre: Sergio Ivan Hernandez Tijerina
No Control: 10231137
Materia: Administración y organización de datos
Actividad: Resumen sobre manejo de archivos secuenciales
Manejo de Archivos Secuenciales
Realizar una investigación sobre el manejo de archivos secuenciales en los siguientes lenguajes de programación:
• C#• PHP• JAVA• XML
Delphi XE – XE2• FLEX
Acontinuacion se muestran los ejemplos encontrados sobre: Creación, lectura, busqueda, eliminacion de archivos secuenciales en los lenguajes anteriormente mencionados
C#
Creación
OpenFileDialog dlgopen = new OpenFileDialog();dlgopen.CheckFileExists = false;if ((dlgopen.ShowDialog() == Windows.Forms.DialogResult.OK)) {
// creamos flujoFileStream flujoopen= new FileStream(dlgopen.FileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);BinaryReader leerfile = new BinaryReader(flujoopen);archivo = dlgopen.FileName;
// leemosif ((leerfile.PeekChar != -1)) {
// si si existe texto// obtenemos total de registros
registro = ((int)(Math.Ceiling((flujoopen.Length/70))));int a;for (a = 0; (a <= (registro - 1)); a++){leerfile.BaseStream.Seek((70 * a),SeekOrigin.Begin);//70 bytes de largo por cada registrovdatos[a].numtra = leerfile.ReadInt32.ToString;vdatos[a].nombre = leerfile.ReadString.ToString;vdatos[a].dep = leerfile.ReadString.ToString;
vdatos(a).salario = leerfile.ReadSingle.ToString;}mnunuevo.Enabled = true;
verregistro(0);// habilitamos menus de navegacion respecto a la posicion actual
if((registro > 1)) {// si hay mas de un registroif ((registronow == (registro - 1))) {
// si esta en la ultima posicionmnuanterior.Enabled = true;mnuprimero.Enabled = true;
}else if ((registronow == 0)) {
// si esta en la primer posicionmnuultimo.Enabled = true;mnusiguiente.Enabled = true;
}else {
// si cae aki esporke es un registro de en mediomnuanterior.Enabled = true;mnuprimero.Enabled = true;mnuultimo.Enabled = true;mnusiguiente.Enabled = true;}
}}else {
mnunuevo.Enabled = true;sblabel.Text = "Sin registros";txtnumtra.Text = "";txtnombre.Text = "";txtdep.Text = "";txtsalario.Text = "";registro = 0;
// inicializamos los registros}GuardarToolStripMenuItem.Enabled = true;leerfile.Close();flujoopen.Close();// ponemos nombre de archivolblfile.Text = Path.GetFileName(dlgopen.FileName);txtnumtra.Focus();
}
Lectura
using System;using System.Text;using System.IO;namespace Test_TextFiles{ class Program { static void Main(string[] args)
{try{
TextReader trs = new StreamReader(@"C:\test.txt");//Lectura de todo el texto del archivo//Console.WriteLine(trs.ReadToEnd());
//o lectura secuencialwhile (trs.Peek()>=0){
Console.WriteLine(trs.ReadLine());}
trs.Close();}catch(Exception e){
Console.WriteLine(e.Message);}Console.WriteLine("Presione cualquier tecla para continuar...");Console.ReadKey();
} }}
PHPCreación
<HTML>
<FORM ACTION=prog19.php METHOD=post>
CLAVE:<INPUT TYPE=text NAME=CLAVE><BR>
NOMBRE:<INPUT TYPE=text NAME=NOMBRE><BR>
EDAD:<INPUT TYPE=text NAME=EDAD><BR>
ESTATURA:<INPUT TYPE=text NAME=ESTATURA><BR>
<INPUT TYPE=submit NAME=OK VALUE="insertar"><BR>
</FORM></HTML>
<?php
if ($OK == "insertar") {
// creando y abriendo archivo
$archivo=fopen('alumnos.dat','a+') or die("no puedo abrir archivo");
// grabando los campos
fputs($archivo, $CLAVE."\n");
fputs($archivo, $NOMBRE."\n");
fputs($archivo, $EDAD."\n");
fputs($archivo, $ESTATURA."\n");
//cerrando archivo
fclose($archivo);
//avisando
echo "registro #".$CLAVE." insertado"."<br>";
};
?>
Lectura<HTML>
<FORM ACTION=prog20.php METHOD=post>
<INPUT TYPE=submit NAME=OK VALUE="lectura"><BR>
</FORM></HTML>
<?php
if ($OK == "lectura") {
// 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);
// 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);
};
?>
Busqueda
<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);
};
?>
Eliminacion
<HTML>
<FORM ACTION=prog23.php METHOD=post>
DAME CLAVE A ELIMINAR:<INPUT TYPE=text NAME=CLAVE><BR>
<INPUT TYPE=submit NAME=OK VALUE="baja"><BR>
</FORM></HTML>
<?php
if ($OK == "baja") {
// abriendo dos archivos
$archivo=fopen('alumnos.dat','a+');
$archt=fopen('temporal.dat','a+') or dye ("no puedo crear archivo") ;
// leyendo el archivo original
while (!feof($archivo))
{
$clave=fgets($archivo);
$nombre=fgets($archivo);
$edad=fgets($archivo);
$estatura=fgets($archivo);
// convirtiendo al mismo tipo
settype($clave,"integer");
if( $CLAVE != $clave and $clave != 0 )
{
// cargando al archivo temporal
fputs($archt, $clave."\n");
// ojo aqui ya es string
fputs($archt, $nombre);
fputs($archt, $edad);
fputs($archt, $estatura);
};
};
// cerrando los dos archivos
fclose($archivo);
fclose($archt);
// eliminando archivo original
unlink("alumnos.dat");
// renombrando temporal como original
rename("temporal.dat","alumnos.dat");
// avisando
echo "registro eliminado";
};
?>
JAVA
Creaciónimport java.io.*; import javax.servlet.*;
import javax.servlet.http.*;
public class prog34 extends HttpServlet
{ public void doPost (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
// se debe crear un objeto de tipo archivo
DataOutputStream archivo = null;
//historia triste se deben grabar y leer solo campo a campo
// creando e inicializando los campos
int matricula=0;
String nombre=new String("");
int edad=0;
Integer temp1=new Integer(0);
try{
//* Creando y grabando a un archivo, esta larga la instrucción*/
archivo = new DataOutputStream( new FileOutputStream("c:\\xitami\\servlets\\susitio\\archivo1.dat",true) );
//capturando y convirtiendo los datos de la pagina
temp1 = temp1.valueOf( request.getParameter("MATRICULA"));
matricula= temp1.intValue();
nombre=request.getParameter("NOMBRE");
temp1 =temp1.valueOf(request.getParameter("EDAD"));
edad= temp1.intValue();
//grabando al archivo
archivo.writeInt(matricula);
archivo.writeUTF(nombre);
archivo.writeInt(edad);
archivo.close();
//pagina de aviso
PrintWriter pagina;
response.setContentType("text/html");
pagina = response.getWriter();
pagina.println("<HTML>");
pagina.println("REGISTRO? INSERTADO USAR BACK PARA REGRESAR E INSERTAR OTRO");
pagina.println("</HTML>");
pagina.close();
}
catch(FileNotFoundException fnfe) { /* Archivo no encontrado */ }
catch (IOException ioe) { /* Error al escribir */ }
destroy();
};
public void destroy(){super.destroy();};
}
Lecturaimport java.io.*; import javax.servlet.*;
import javax.servlet.http.*;
public class prog35 extends HttpServlet
{public void doPost (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{ DataInputStream archivo = null;
int matricula=0;
String nombre=new String("");
int edad=0;
PrintWriter pagina;
response.setContentType("text/html");
pagina = response.getWriter();
pagina.println("<HTML>");
pagina.println("<P ALIGN="+"CENTER"+">ALUMNOS TABLA</P>");
pagina.println("<P ALIGN="+"CENTER"+">MATRICULA NOMBRE EDAD</P>");
pagina.println("<DIV ALIGN="+"CENTER"+"><CENTER>");
pagina.println("<TABLE BORDER="+"1"+">");
try{
//* abriendo archivo para lectura */
archivo = new DataInputStream( new FileInputStream("c:\\xitami\\servlets\\lauro\\archivo1.dat") );
//leyendo archivo
while (true) {
pagina.println("<TR>");
matricula=archivo.readInt();pagina.println("<TD>"+matricula+"</TD>");
nombre=archivo.readUTF();pagina.println("<TD>"+nombre+"</TD>");
edad=archivo.readInt();pagina.println("<TD>"+edad+"</TD>");
pagina.println("</TR>");}
}
catch(FileNotFoundException fnfe) { /* Archivo no encontrado */ }
catch (IOException ioe) { /* Error al escribir */ }
pagina.println("</TABLE></CENTER></DIV></HTML>");
archivo.close();
pagina.close();
destroy();
};
public void destroy(){super.destroy();};
}
Busquedaimport java.io.*; import javax.servlet.*;
import javax.servlet.http.*;
public class prog36 extends HttpServlet
{ public void doPost (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{ DataInputStream archivo = null;
int matricula=0;
String nombre=new String("");
int edad=0;
Integer temp1=new Integer(0);
PrintWriter pagina;
response.setContentType("text/html");
pagina = response.getWriter();
pagina.println("<HTML>");
pagina.println("<P ALIGN="+"CENTER"+">ALUMNOS TABLA</P>");
pagina.println("<P ALIGN="+"CENTER"+">MATRICULA NOMBRE EDAD</P>");
pagina.println("<DIV ALIGN="+"CENTER"+"><CENTER>");
pagina.println("<TABLE BORDER="+"1"+">");
//capturando clave a buscar
temp1 = temp1.valueOf( request.getParameter("MATRICULA"));
int clave = temp1.intValue();
try{
//* abriendo archivo para lectura */
archivo = new DataInputStream( new FileInputStream("c:\\xitami\\servlets\\lauro\\archivo1.dat") );
//leyendo archivo y observar donde quedo TR
pagina.println("<TR>");
while (true) {
//leyendo registro
matricula=archivo.readInt();
nombre=archivo.readUTF();
edad=archivo.readInt();
//comparando y desplegar en condición cierta
if (clave == matricula){
pagina.println("<TD>"+matricula+"</TD>");
pagina.println("<TD>"+nombre+"</TD>");
pagina.println("<TD>"+edad+"</TD>");
pagina.println("</TR>");}; } }
catch(FileNotFoundException fnfe) { /* Archivo no encontrado */ }
catch (IOException ioe) { /* Error al escribir */ }
pagina.println("</TABLE></CENTER></DIV></HTML>");
archivo.close();
pagina.close();
destroy();
};
public void destroy(){super.destroy();};
}
Delphi
Procedure CrearFichero;
Var
Datos : File of TListado;
begin
AssignFile (Datos, ‘Informacion.fic’);
Rewrite (Datos);
CloseFile (Datos);
end;
Procedure EscribirDatos (NuevaInformacion : TListado);
Var
Datos : File of TListado;
begin
AssignFile (Datos, ‘Informacion. fic’);
Reset (Datos);
Seek (Datos,FileSize (Datos));
Write (Datos, NuevaInformacion);
CloseFile (Datos);
end;
Procedure LeerDatos;
Var
Datos : File of TListado;
I : Integer;
begin
AssignFile (Datos, ‘Informacion. fic’);
Reset (Datos);
For I := 1 to FileSize (Datos) do
Read (Datos, Listado [I]);
CloseFile (Datos);
end;
XML y FLEX
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" height="450" width="552" showTitleBar="false">
<mx:Button x="396.5" y="85" label="Cargar Archivo" id="btload" click="onload()" width="110.5"/>
<mx:Button x="401" y="39" label="Crear Archivo" id="btncreate" click="createfile()" width="106"/>
<mx:TextArea x="27.5" y="86" width="361" height="341" id="textarea"/>
<mx:TextInput x="195" y="39" id="texnomb"/>
<mx:Label x="27.5" y="41" text="Nombre del archivo a crear" id="lbtext"/>
<mx:Script>
<![CDATA[
/* para el tratamiento de archivos.
clases:
File, FileMode y FileStream
*/
import flash.filesystem.*;
//import flash.net.FileFilter;
//import flash.events.Event;
public function onload():void{
//declaramos una variable de tipo archivo y la instanciamos
var fileToOpen:File= new File();
/*creamos dos variables txtFilter y allfiles de tipo FileFilter
para asignar un filtro de archivos para nuestra aplicacion, es decir
solo mostrara el tipo de archivos que deseamos
*/
var txtFilter:FileFilter = new FileFilter("Archivos de Texto (*.as,*.xhtml,*.xml,*.mxml,*.txt)","*.as;*.xhtml;*.xml;*.mxml;*.txt");
var allfiles:FileFilter = new FileFilter("Todos los archivos...","*.*");
try
{
/*intentamos abrir archivos usando un cuadro de dialogo abrir y le pasamos
las variables filtro txtFilter y allfiles.
*/
fileToOpen.browseForOpen("Abrir Archivo", [txtFilter,allfiles]);
//en caso de seleccionar un archivo llamará al metodo fileSelected
fileToOpen.addEventListener(Event.SELECT, fileSelected);
}
catch (error:Error)
{
//en caso de error limpiamos el textarea
textarea.text="";
/*y mostramos un mensaje de error de error.message el cual nos
indica el tipo de error producido. (vease Runtime Errors en la documentacion)
*/
textarea.text="\nFallo al cargar el archivo: "+String(error.message);
}
function fileSelected(event:Event):void {
/*funcion fileSelected para tratar si un archivo fue seleccionado en el
cuadro de dialogo abrir.
Creamos una variable llamada stream de tipo FileStream el cual se utilizara
para la creacion, carga, lectura y escritura del archivo
*/
var stream:FileStream = new FileStream();
//abrirmos el archivo fijado por fileToOpen para lectura
stream.open(fileToOpen, FileMode.READ);
/*declaramos una variable fileData de tipo String para almacenar los
datos recopilados del archivo despues de su apertura.
Puede utilizarse de la forma:
var fileData:String = stream.readUTF();
El metodo stream.readUTF lee una cadena desde el archivo y la trata como
de tipo UTF-8.
o de la forma:
var fileData:String = stream.readUTFBytes(stream.bytesAvailable);
El metodo stream.readUTFBytes lee una secuencia de bytes desde el archivo
y los trata como UTF-8.
Se le pasa como parametro la cantidad de bytes a leer, en este caso la
propiedad bytesAvailable el cual retorna el numero de bytes disponibles para
leer desde el archivo.
*/
var fileData:String = stream.readUTFBytes(stream.bytesAvailable);
//pasamos el contenido de la variable fileData al textarea.
textarea.text=fileData;
}//fileSelected
}//onload
public function createfile():void{
try
{
/*intentamos crear un archivo xml y guardarlo en el escritorio del
usuario en curso.
La funcion createfile utilzada para crear un nuevo archivo xml, con datos
establecidos en una variable myXML de tipo XML-
Declaramos un variable source de tipo file, esta representa la ruta a un
archivo o directorio.
La propiedad desktopDirectory como su nombre lo indica, especifica la ruta
del escritorio del usuario.
El metodo resolvePath crea un nuevo objeto tipo File con una ruta relativa
para el archivo, basado en un parametro que contiene el nombre y/o ruta del
archivo en cuestion.
Tomamos lo descrito en un Textinput para darle un nombre al archivo.
por defecto fijamos la extension xml.
*/
var source:File = File.desktopDirectory.resolvePath(texnomb.text+".xml");
//limpiamos el textarea para cargar el archivo.
textarea.text="";
/*mostramos donde fue guardado el archivo, la propiedad nativePath indica
la ruta, nombre y extension del archivo guardado.
*/
textarea.text+="\n Archivo creado en: \n"+String(source.nativePath)+"\n";
/*creamos una variable llamada flujo de tipo FileStream el cual se
utilizara para la creacion, carga, lectura y escritura del archivo
*/
var flujo:FileStream = new FileStream();
//abrirmos el archivo fijado por source para escritura
flujo.open(source, FileMode.WRITE);
//creamos una variable myXML de tipo XML a la cual le ingresamos algunos datos.
var myXML:XML =
<order>
<item id="uno">
<menuName>burger</menuName>
<price>3.95</price>
<cant>20</cant>
</item>
<item id="2">
<menuName>fries</menuName>
<price>1.45</price>
<cant>60</cant>
</item>
<item id="3">
<menuName>carne</menuName>
<price>3444.5</price>
</item>
<item id="4">
<menuName>fin</menuName>
<price>0</price>
</item>
</order>;
/*creamos una variable cab, de tipo String para cargar la cabecera
del XML, esto se hace para tener conformidad con el standar y que a la
variable XML no se le puede anexar.
*/
var cab:String="<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>"
/*opcionalmente podemos convertir la variable myXML a String
y asignarsela a una variable de tipo String para pasarla como parametro
al metodo writeUTFBytes, utilizado para guardar los datos al archivo.
ej:
var cadxml:String= myXML.toString();
flujo.writeUTFBytes(cab);//guardamos la cabecera del xml
flujo.writeUTFBytes(cadxml);//guardamos el xml
*/
//escribimos los datos en el archivo
flujo.writeUTFBytes(cab);//guardamos la cabecera del xml
flujo.writeUTFBytes(myXML);//guardamos el xml
//cerramos el archivo
flujo.close();
}
catch (error:Error)
{
//en caso de error limpiamos el textarea
textarea.text="";
/*y mostramos un mensaje de error de error.message el cual nos
indica el tipo de error producido. (vease Runtime Errors en la documentacion)
*/
textarea.text+="\nFallo al cargar el archivo: "+String(error.message);
}
}//createfile
]]>
</mx:Script>
</mx:WindowedApplication>