Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Nombre: Sergio Ivan Hernandez Tijerina No Control: 10231137 Materia: Administracin y organizacin de datos Actividad: Resumen sobre manejo de archivos secuenciales
Manejo de Archivos Secuenciales Realizar una investigacin sobre el manejo de archivos secuenciales en los siguientes lenguajes de programacin: C# PHP JAVA XML Delphi XE XE2 FLEX
Acontinuacion se muestran los ejemplos encontrados sobre: Creacin, lectura, busqueda, eliminacion de archivos secuenciales en los lenguajes anteriormente mencionados
C#
Creacin
OpenFileDialog dlgopen = new OpenFileDialog(); dlgopen.CheckFileExists = false; if ((dlgopen.ShowDialog() == Windows.Forms.DialogResult.OK)) { // creamos flujo FileStream flujoopen= new FileStream(dlgopen.FileName, FileMode.OpenOrCreate, FileAccess.ReadWrite); BinaryReader leerfile = new BinaryReader(flujoopen); archivo = dlgopen.FileName; // leemos if ((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 registro vdatos[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 registro if ((registronow == (registro - 1))) { // si esta en la ultima posicion mnuanterior.Enabled = true; mnuprimero.Enabled = true; } else if ((registronow == 0)) { // si esta en la primer posicion mnuultimo.Enabled = true; mnusiguiente.Enabled = true; } else { // si cae aki esporke es un registro de en medio mnuanterior.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 archivo lblfile.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 secuencial while (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(); } } }
PHP
Creacin
<HTML> <FORM ACTION=prog19.php METHOD=post> CLAVE:<INPUT TYPE=text NAME=CLAVE><BR>
</FORM></HTML>
fputs($archivo, $CLAVE."\n");
fputs($archivo, $NOMBRE."\n");
fputs($archivo, $EDAD."\n");
fputs($archivo, $ESTATURA."\n");
//cerrando archivo
fclose($archivo);
//avisando
};
?>
Lectura
<HTML> <FORM ACTION=prog20.php METHOD=post>
</FORM></HTML>
<?php
if ($OK == "lectura") {
// abriendo archivo
$archivo=fopen('alumnos.dat','a+');
bgcolor=Red>EDAD</th><th
// leyendo el archivo
while (!feof($archivo)){
$clave=fgets($archivo);
$nombre=fgets($archivo);
$edad=fgets($archivo);
$estatura=fgets($archivo);
echo"<tr>";
echo "<td>".$clave."</td>";
echo "<td>".$nombre."</td>";
echo "<td>".$edad."</td>";
echo "<td>".$estatura."</td>";
echo"</tr>";
};
echo "</table>";
fclose($archivo);
};
?>
Busqueda
<HTML>
</FORM></HTML>
<?php
if ($OK == "busqueda") {
// abriendo archivo
$archivo=fopen('alumnos.dat','a+');
bgcolor=Red>EDAD</th><th
// leyendo el archivo
while (!feof($archivo)){
$clave=fgets($archivo);
$nombre=fgets($archivo);
$edad=fgets($archivo);
$estatura=fgets($archivo);
settype($clave,"integer");
// settype($CLAVE,"integer");
if ( $CLAVE == $clave){
echo"<tr>";
echo "<td>".$clave."</td>";
echo "<td>".$nombre."</td>";
echo "<td>".$edad."</td>";
echo "<td>".$estatura."</td>";
echo"</tr>";};
};
echo "</table>";
fclose($archivo);
};
?>
Eliminacion
<HTML> <FORM ACTION=prog23.php METHOD=post>
</FORM></HTML>
<?php
if ($OK == "baja") {
$archivo=fopen('alumnos.dat','a+');
while (!feof($archivo))
$clave=fgets($archivo);
$nombre=fgets($archivo);
$edad=fgets($archivo);
$estatura=fgets($archivo);
settype($clave,"integer");
fputs($archt, $clave."\n");
fputs($archt, $nombre);
fputs($archt, $edad);
fputs($archt, $estatura);
};
};
fclose($archivo);
fclose($archt);
unlink("alumnos.dat");
rename("temporal.dat","alumnos.dat");
// avisando
};
?>
JAVA
Creacin
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
HttpServletResponse response)
int matricula=0;
int edad=0;
try{
new
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("</HTML>");
pagina.close();
destroy();
};
Lectura
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
HttpServletResponse response)
int matricula=0;
int edad=0;
PrintWriter pagina;
response.setContentType("text/html");
pagina = response.getWriter();
pagina.println("<HTML>");
pagina.println("<DIV ALIGN="+"CENTER"+"><CENTER>");
pagina.println("<TABLE BORDER="+"1"+">");
try{
new
//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>");}
pagina.println("</TABLE></CENTER></DIV></HTML>");
archivo.close();
pagina.close();
destroy();
};
Busqueda
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
HttpServletResponse response)
int matricula=0;
int edad=0;
PrintWriter pagina;
response.setContentType("text/html");
pagina = response.getWriter();
pagina.println("<HTML>");
pagina.println("<DIV ALIGN="+"CENTER"+"><CENTER>");
pagina.println("<TABLE BORDER="+"1"+">");
try{
new
pagina.println("<TR>");
while (true) {
//leyendo registro
matricula=archivo.readInt();
nombre=archivo.readUTF();
edad=archivo.readInt();
if (clave == matricula){
pagina.println("<TD>"+matricula+"</TD>");
pagina.println("<TD>"+nombre+"</TD>");
pagina.println("<TD>"+edad+"</TD>");
pagina.println("</TR>");}; } }
pagina.println("</TABLE></CENTER></DIV></HTML>");
archivo.close();
pagina.close();
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 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); abrir y
} 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 XMLDeclaramos 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=\"iso8859-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>