Pgina 1
ARCHIVOS DE DATOS
El almacenamiento en variables y arreglos es temporal; los datos se pierden cuando una variable local queda fuera del alcance, o cuando el programa termina. Las computadoras utilizan archivos de datos para la retencin a largo plazo de grandes cantidades de datos, incluso hasta despus de que terminan los programas que crean esos datos. e denominan datos persistentes a aquellos que duran m!s all! de la duracin de la e"ecucin del programa. Las computadoras almacenan archivos en dispositivos de almacenamiento secundario como disco duros, # $, discos pticos y cintas magnticas.
El procesamiento de archivos es una de las herramientas m!s importantes que debe tener un lengua"e de programacin para soportar las aplicaciones comerciales, que generalmente procesan grandes cantidades de datos persistentes. %ava posee pose poderosas caracter&sticas de procesamiento de archivos de datos, las cuales permiten a un programa leer y escribir datos en memoria interna y'o memoria e(terna o en archivos a travs de la red. Entre las operaciones que se pueden realizar con archivos de datos tenemos) *gregar registros de datos. *cceder a registros, siguiendo alg+n mtodo ,secuencial, directo, al azar,-. E(aminar informacin almacenada en los registros de datos. ustituir una informacin de los registros de datos.
JERARQUA DE DATOS
Ing. Javier Alberto Manrique Quionez Pgina 2
Base de datos
Archivo de "otas
Archivo de Cx#
evaluacin parcial 1 1!
evaluacin parcial 1
Campo
Byte Bit
10000001 1
Letra A en ASCII
Archivo binarios de datos n+mero de bytes le&dos o escritos. Los ob"etos 0andom*ccess5ile esperan informacin de lectura'escritura utilizando los mtodos read-,. y 8rite-,.. *dem!s de los mtodos de :'; normales que impl&citamente mueven el puntero de archivo cuando ocurre la operacin, 0andom*ccess5ile contiene un que manipula e(pl&citamente el puntero de archivo) see0 1 4osiciona el puntero de archivo en la posicin anterior al byte especificado.
ACTUALI&ACI'% DE I%-OR2ACI'% e pueden utilizar archivo de acceso aleatorio para escribir informacin. E"emplo) p3 !ic "oo!ea, escri irRegistro*A!3m,o oA!3m,o4 i,t posicio,+ 5 tr6 5 Ra,#omAccess-i!e archivo7 archivo 8 ,e/ Ra,#omAccess-i!e*9A!3m,o(#at94 9r/9+7 archivo(see0*posicio, : ;<=+7 archivo(/riteI,t*oA!3m,o(getA!3m,o>i#*++7 archivo(/riteUT-*oA!3m,o(getApe!!i#o%om re*++7 archivo(/riteDo3 !e*oA!3m,o(getEva!3acio,?arcia!;*++7 archivo(/riteDo3 !e*oA!3m,o(getEva!3acio,?arcia!@*++7 archivo(/riteDo3 !e*oA!3m,o(get?rome#ioDeTra aAo*++7 archivo(/riteDo3 !e*oA!3m,o(get?rome#io-i,a!*++7 ret3r, tr3e7 B catch *ECceptio, e+ 5 ret3r, Da!se7 B B LECTURA DE I%-OR2ACI'% e pueden utilizar archivo de acceso aleatorio para leer informacin. E"emplo) p3 !ic A!3m,o !eerRegistro*A!3m,o oA!3m,o4 i,t posicio,+ 5 tr6 5 Ra,#omAccess-i!e archivo7 archivo 8 ,e/ Ra,#omAccess-i!e*9A!3m,o(#at94 9r9+7 archivo(see0*posicio, : ;<=+7 oA!3m,o 8 ,e/ A!3m,o*archivo(rea#I,t*+4 archivo(rea#UT-*+4 archivo(rea#Do3 !e*+4 archivo(rea#Do3 !e*+4 archivo(rea#Do3 !e*+4 archivo(rea#Do3 !e*++7 ret3r, oA!3m,o7 B catch *IOECceptio, e+ 5 ret3r, ,3!!7 B B DETER2I%ACII'% DE %E2ERO DE RE$ISTROS e puede determinar el n+mero de registros grabados en un archivo . E"emplo) p3 !ic i,t ,3meroDeRegistro*+ 5 tr6 5 -i!e Dichero 8 ,e/ -i!e*9A!3m,o(#at9+7 Ra,#omAccess-i!e archivo7 archivo 8 ,e/ Ra,#omAccess-i!e*Dichero4 9r9+7 i,t , 8 *i,t+ 2ath(cei!**#o3 !e+ archivo(!e,gth*+ / ;<=+7 archivo(c!ose*+7 ret3r, ,7 B catch *IOECceptio, e+ 5 ret3r, FGG7 B B 2HTODOS ?ARA ESCRITURA
Pgina <
void
/rite"oo!ea,( boolean )
Escribe un boolean como un valor byte. Escribe un byte como un valor byte. Escribe un string como una secuencia de bytes. Escribe un character como dos valores bytes. Escribe un string como una secuencia de caracteres. Escribe un double como una secuencia de ocho bytes. Escribe un float como una secuencia de cuatro bytes. Escribe un int como una secuencia de cuatro bytes. Escribe un long como una secuencia de ocho bytes. Escribe a short como una secuencia de dos bytes. Escribe un tring o cadena hacia un archivo usando el formato #35=> modificado en una m!quina de manera independiente.
void /riteDo3 !e( double ) void /rite-!oat( float ) void /riteI,t( int ) void /riteLo,g( long) void /riteShort( int ) void /riteUT-(
tring str )
rea#"oo!ea, () rea#"6te() rea#Char() rea#Do3 !e*+ rea#-!oat*+ rea#I,t() rea#Li,e() rea#Lo,g() rea#Short$% rea#UT-()
lee un boolean desde un archivo lee un valor de > bits con signo desde un archivo. leer un +nico car!cter desde un archivo lee un double desde un archivo lee un float desde un archivo lee un valor int de 92 bits con signo desde un archivo. Lee la siguiente l&nea de te(to desde un archivo. lee un valor long de ?< bits con signo desde un archivo. lee un valor short de 1? bits con signo desde un archivo. lee un tring desde un archivo.
long short
tring
* continuacin se presenta un e"emplo de archivo binario de datos utilizando @#:, que proporciona un sistema de men+ a. b. c. d. 4resenta un formulario para un istema de /en+s. 4resenta un 5ormulario para un istema de /antenimiento *$6/ de alumnos. La letra *$6/ significan *ltas, $a"as, 6onsultas y /odificacin respectivamente. La estructura de la clase *lumno es la siguiente)
int String double double double double alumno_id apellidoNombre evaluacionParcial1 evaluacionParcial2 promedioDeTrabajo promedioFinal
e. f. g.
La longitud del registro es 1<7 bytes. #tiliza una clase de acceso a datos ,1*;. que permite interactuar la aplicacin con el archivo de datos almacenado e(ternamente. #tiliza una clase denominada *$6/*ction para almacenar las constantes de las operaciones posibles. En la 5igura ?.1 se presenta el e(plorador de proyectos con el sistema de menus y otros.
Pgina A
Archivo binarios de datos h. En la 5iguras ?.2, 5igura ?.9, 5igura ?.<, 5igura ?.A, 5igura ?.?, 5igura ?.B y 5igura ?.> se visualizan los formularios de la aplicacin e"emplo ,formularios de sistema de men+s y cuadrops de di!logo.. l. La 5igura ?.> presenta el cdigo de la aplicacin C *plicacion*rchivo1e1atos ". La 5igura ?.D presenta el cdigo de la aplicacin C *$6/*ction E. La 5igura ?.17 presenta el cdigo de la aplicacin C 6lase *lumno. l. La 5igura ?.11 presenta el cdigo de la aplicacin C 6lase *lumno 1*;. m. La 5igura ?.12 presenta el cdigo de la aplicacin C clase 0eporte6on4arametros n. La 5igura ?.19 presenta el cdigo de la aplicacin C %5rame*lumnos o. La 5igura ?.1< presenta el cdigo de la aplicacin C %1ialog*$6/*lumnos -ig3ra I(;1 -orm3!ario #e Sistema #e 2e,J e, eCp!ora#or #e pro6ectos
Pgina ?
Pgina B
Pgina >
Pgina D
Pgina 17
public *lumno,.
F this.alumnoMid I 7; this.apellidoLombre I null; this.evaluacion4arcial1 I 7; this.evaluacion4arcial2 I 7; this.promedio1e3raba"o I 7; this.promedio5inal I 7;
Pgina 11
-ig3ra I(;;1 CP#igo #e !a ap!icaciP, K C!ase A!3m,o DAO pacEage 4aquete istema1e/enu; import "ava.io.5ile; import "ava.io.:;E(ception; import "ava.io.0andom*ccess5ile; Ing. Javier Alberto Manrique Quionez Pgina 12
Pgina 19
Pgina 1<
o*lumno.set4romedio5inal,.; escribir0egistro,o*lumno, posicion.; K return true; K catch ,:;E(ception e. F return false; K Ing. Javier Alberto Manrique Quionez Pgina 1A
Archivo binarios de datos K K -ig3ra I(;@1 CP#igo #e !a ap!icaciP, K C!ase ReporteCo,?arametros pacEage 4aquete istema1e/enu; import "ava.net.#0L; import "ava.util.*rrayList; import "ava.util./ap; import "ava.util.Uash/ap; import net.sf."asperreports.engine.R; import net.sf."asperreports.engine.data.%0$ean6ollection1ata ource; import net.sf."asperreports.engine.util.%0Loader; import net.sf."asperreports.vie8.R;
Pgina 1?
Archivo binarios de datos -ig3ra I(;L1 CP#igo #e !a ap!icaciP, K C!ase J-rameA!3m,os pacEage 4aquete istema1e/enu; import "ava.net.#0L; import "ava(.s8ing.%;ption4ane;
public %5rame*lumnos,.
F K F K init6omponents,.;
Pgina 1B
Archivo binarios de datos -ig3ra I(;<1 CP#igo #e !a ap!icaciP, K C!ase JDia!ogA"C2A!3m,os pacEage 4aquete istema1e/enu; import "ava.a8t.event.YeyEvent; import "ava.util.*rrayList; import "ava(.s8ing.%;ption4ane;
Archivo binarios de datos F int size I o/odelo1e3abla.get0o86ount,.; for ,int i I 7; i P size; iNN. F o/odelo1e3abla.remove0o8,7.; K
1.;
Pgina 27
Archivo binarios de datos F *lumno1*; o*lumno1*; I ne8 *lumno1*;,.; o*lumno1*;.insertar0egistro,get;b"eto*lumno,..; %;ption4ane.sho8/essage1ialog,null, O;peracin E(itosaO.; action I *$6/*ction.L;M*63:;L; controlador1eEventos$otones*$/6,.; "$uttonLuevo.request5ocus,.; K else F action I *$6/*ction.L;M*63:;L; controlador1eEventos$otones*$/6,.; K K else F if ,action II *$6/*ction.*63:;LM/;1:5:6*0. F int res I %;ption4ane.sho86onfirm1ialog,this, OVEst! seguro de modificar el *lumnoWO, O1i!logo de 6onfirmacinO, %;ption4ane.XE ML;M;43:;L.; if ,res II %;ption4ane.XE M;43:;L. F *lumno1*; o*lumno1*; I ne8 *lumno1*;,.; if ,o*lumno1*;.modificar0egistro, :nteger.parse:nt,"3e(t5ield*lumnoMid.get3e(t,. ., get;b"eto*lumno,... F %;ption4ane.sho8/essage1ialog,null, O;peracion E(itosaO.; action I *$6/*ction.L;M*63:;L; controlador1eEventos$otones*$/6,.; K else F %;ption4ane.sho8/essage1ialog,null, OLo se pudo completar la operacinO.; K K else F action I *$6/*ction.L;M*63:;L; controlador1eEventos$otones*$/6,.; K K K actualizar%3able*lumno,.; K
Archivo binarios de datos set;b"eto*lumno,o*lumno eleccionado.; K K else F if ,evt.getYey6ode,. II YeyEvent.JYM1;[L. F int selected0o8 I "3able*lumno.get elected0o8,.; selected0o8NN; if ,selected0o8 SI "3able*lumno.get0o86ount,.. F *lumno o*lumno eleccionado I ,*lumno. "3able*lumno.getJalue*t,selected0o8, 1.; set;b"eto*lumno,o*lumno eleccionado.; K K K K
private void "$uttonEliminar*ction4erformed,"ava.a8t.event.*ctionEvent evt. F if ,"3e(t5ield*lumnoMid.get3e(t,..length,. SI 7. F try F int res I %;ption4ane.sho86onfirm1ialog,this, OVEst! seguro de eliminar el registro WO, O1ialogo de 6onfirmacionO, %;ption4ane.XE ML;M;43:;L.; if ,res II %;ption4ane.XE M;43:;L. F *lumno1*; o*lumno1*; I ne8 *lumno1*;,.; if ,o*lumno1*;.eliminar0egistro,:nteger.parse:nt,"3e(t5ield*lumnoMid.get3e(t,.... F %;ption4ane.sho8/essage1ialog,null, O;peracion E(itosaO.; action I *$6/*ction.L;M*63:;L; controlador1eEventos$otones*$/6,.; actualizar%3able*lumno,.; K else F %;ption4ane.sho8/essage1ialog,null, OLo se pudo completar la operacionO.; K K K catch ,E(ception e. F %;ption4ane.sho8/essage1ialog,null, OEscriba los datos correctamenteO.; K K else F %;ption4ane.sho8/essage1ialog,null, O:ngrese el *lumnoMidO.; K K
Pgina 22
Archivo binarios de datos K else F if ,action II *$6/*ction.*63:;LM/;1:5:6*0. F habilitar6a"as1e3e(to,true.; habilitar$otones*$/6,false, false, true, false, false, true, false.; "3e(t5ield*lumnoMid.setEditable,false.; K else F if ,action II *$6/*ction.*63:;LM6;L #L3*. F habilitar6a"as1e3e(to,false.; habilitar$otones*$/6,true, true, false, true, true, false, true.; "3e(t5ield*lumnoMid.setEditable,false.; K K K K K private "ava(.s8ing.%$utton "$utton$uscar; private "ava(.s8ing.%$utton "$utton6ancelar; private "ava(.s8ing.%$utton "$uttonEliminar; private "ava(.s8ing.%$utton "$utton@uardar; private "ava(.s8ing.%$utton "$utton/odificar; private "ava(.s8ing.%$utton "$uttonLuevo; private "ava(.s8ing.%$utton "$utton alir; private "ava(.s8ing.%Label "Label*lumnoMid; private "ava(.s8ing.%Label "Label*pellidos; private "ava(.s8ing.%Label "LabelEvaluacion4arcial1; private "ava(.s8ing.%Label "LabelEvaluacion4arcial2; private "ava(.s8ing.%Label "Label4rimedio1e3raba"o; private "ava(.s8ing.%Label "Label3itulo; private "ava(.s8ing.%4anel "4anel1; private "ava(.s8ing.% croll4ane " croll4ane*lumno; private "ava(.s8ing.%3able "3able*lumno; private "ava(.s8ing.%3e(t5ield "3e(t5ield*lumnoMid; private "ava(.s8ing.%3e(t5ield "3e(t5ield*pellidoLombre; private "ava(.s8ing.%3e(t5ield "3e(t5ieldEvaluacion4arcial1; private "ava(.s8ing.%3e(t5ield "3e(t5ieldEvaluacion4arcial2; private "ava(.s8ing.%3e(t5ield "3e(t5ield4romedio1e3raba"o; K
Pgina 29
Archivo binarios de datos import "ava.io. erializable; import "ava.util.R; import "ava(.s8ing.event.3able/odelEvent; import "ava(.s8ing.table.R; public class *rrayList3able/odel e(tends *bstract3able/odel implements erializable F private boolean cellEditable I false; protected *rrayList data*rray; protected *rrayList column:dentifiers; private intGH columnsEdit I F K; public *rrayList3able/odel,. F this,7, 7.; K public *rrayList3able/odel,int ro86ount, int column6ount. F this,ne8 *rrayList,column6ount., ro86ount.; K public *rrayList3able/odel,;b"ectGHGH data, ;b"ectGH columnLames. F 1efault3able/odel m I null; set1ata*rray,data, columnLames.; K public *rrayList3able/odel,;b"ectGH columnLames, int ro86ount. F this,convert3o*rrayList,columnLames., ro86ount.; K public *rrayList3able/odel,*rrayList columnLames, int ro86ount. F set1ata*rray,ne8 *rrayList,ro86ount., columnLames.; K public *rrayList3able/odel,*rrayList data, *rrayList columnLames. F set1ata*rray,data, columnLames.; K public int get6olumn6ount,. F return column:dentifiers.size,.; K public void remove0o8,int ro8. F data*rray.remove,ro8.; fire3able0o8s1eleted,ro8, ro8.; K public int get0o86ount,. F return data*rray.size,.; K public tring get6olumnLame,int column. F ;b"ect id I null; if ,column P column:dentifiers.size,.. F id I column:dentifiers.get,column.; K return ,id II null. W super.get6olumnLame,column. ) id.to tring,.; K public boolean is6ellEditable,int ro8, int column. F int size I columnsEdit.length; if ,size SI 7. F for ,int i I 7; i P size; iNN. Ing. Javier Alberto Manrique Quionez Pgina 2<
Archivo binarios de datos F if ,columnsEditGiH II column. F cellEditable I false; breaE; K K K else F cellEditable I true; K return cellEditable; K public void set6olumnEditable,intGH columns. F this.columnsEdit I columns; K public 6lass get6olumn6lass,int column:nde(. F if ,get0o86ount,. II 7. F return ;b"ect.class; K ;b"ect ob"eto I getJalue*t,7, column:nde(.; return ob"eto II null W ;b"ect.class ) ob"eto.get6lass,.; K public ;b"ect getJalue*t,int ro8:nde(, int column:nde(. F *rrayList ro8*rray I ,*rrayList. data*rray.get,ro8:nde(.; return ro8*rray.get,column:nde(.; K public void setJalue*t,;b"ect aJalue, int ro8, int column. F *rrayList ro8*rray I ,*rrayList. data*rray.get,ro8.; ro8*rray.set,column, aJalue.; fire3able6ell#pdated,ro8, column.; K protected *rrayList get1ata*rray,. F return data*rray; K public *rrayList get1ata,. F return ne8 *rrayList,,*rrayList. get1ata*rray,..clone,..; K '' get1ata,. public *rrayList get6olumnLames,. F return ,*rrayList. column:dentifiers.clone,.; K ''public void set1ataJector,Jector dataJector, Jector column:dentifiers. public void set1ata*rray,*rrayList data*rray, *rrayList column:dentifiers. F this.data*rray I nonLull*rrayList,data*rray.; this.column:dentifiers I nonLull*rrayList,column:dentifiers.; "ustify0o8s,7, get0o86ount,..; fire3able tructure6hanged,.; K public void set1ata*rray,;b"ectGHGH data*rray, ;b"ectGH column:dentifiers. F set1ata*rray,convert3o*rrayList,data*rray., convert3o*rrayList,column:dentifiers..; K private void "ustify0o8s,int from, int to. F data*rray.ensure6apacity,get0o86ount,..; for ,int i I from; i P to; iNN. Ing. Javier Alberto Manrique Quionez Pgina 2A
Archivo binarios de datos F if ,data*rray.get,i. II null. F data*rray.add,i, ne8 *rrayList,..; K ,,*rrayList. data*rray.get,i...ensure6apacity,get6olumn6ount,..; K K '' "ustify0o8s,. private static *rrayList nonLull*rrayList,*rrayList al. F return ,al SI null. W al ) ne8 *rrayList,.; K protected static *rrayList convert3o*rrayList,;b"ectGH an*rray. F if ,an*rray II null. F return null; K *rrayList al I ne8 *rrayList,an*rray.length.; for ,int i I 7; i P an*rray.length; iNN. F al.add,an*rrayGiH.; K return al; K protected static *rrayList convert3o*rrayList,;b"ectGHGH an*rray. F if ,an*rray II null. F return null; K *rrayList al I ne8 *rrayList,an*rray.length.; for ,int i I 7; i P an*rray.length; iNN. F al.add,convert3o*rrayList,an*rrayGiH..; K 1efault3able/odel m I null; return al; K public void add6olumn,;b"ect columnLame. F add6olumn,columnLame, ,List. null.; K public void add6olumn,;b"ect columnLame, List column1ata. F column:dentifiers.add,columnLame.; if ,column1ata SI null. F int column ize I column1ata.size,.; if ,column ize T get0o86ount,.. F ''data*rray.set ize,column ize.; data*rray.ensure6apacity,column ize.; K "ustify0o8s,7, get0o86ount,..; int ne86olumn I get6olumn6ount,. = 1; for ,int i I 7; i P column ize; iNN. F List ro8 I ,List. data*rray.get,i.; ro8.add,ne86olumn, column1ata.get,i..; K K else F "ustify0o8s,7, get0o86ount,..; K fire3able tructure6hanged,.; K '' add6olumn,. public void add6olumn,;b"ect columnLame, ;b"ectGH column1ata. F add6olumn,columnLame, convert3o*rrayList,column1ata..; K
Pgina 2?
Archivo binarios de datos public void add0o8,;b"ectGH ro81ata. F add0o8,convert3o*rrayList,ro81ata..; K '' add0o8,;b"ectGH. public void add0o8,*rrayList ro81ata. F insert0o8,get0o86ount,., ro81ata.; K '' add0o8,List. public void insert0o8,int ro8, *rrayList ro81ata. F data*rray.add,ro8, ro81ata.; "ustify0o8s,ro8, ro8 N 1.; fire3able0o8s:nserted,ro8, ro8.; K '' insert0o8,int, *rrayList. public void move0o8,int start, int end, int to. F int shift I to = start; int first, last; if ,shift P 7. F first I to; last I end; K else F first I start; last I to N end = start; K rotate,data*rray, first, last N 1, shift.; fire3able0o8s#pdated,first, last.; K '' move0o8,. private static void rotate,*rrayList v, int a, int b, int shift. F int size I b = a; int r I size = shift; int g I gcd,size, r.; for ,int i I 7; i P g; iNN. F int to I i; ;b"ect tmp I v.get,a N to.; for ,int from I ,to N r. \ size; from SI i; from I ,to N r. \ size. F v.set,a N to, v.get,a N from..; to I from; K v.set,a N to, tmp.; K K '' rotate,. private static int gcd,int i, int ". F return ," II 7. W i ) gcd,", i \ ".; K '' gcd,. public void set6olumn6ount,int column6ount. F column:dentifiers I ,*rrayList. column:dentifiers.subList,7, column6ount = 1.; '' column:dentifiers.set ize,column6ount.; "ustify0o8s,7, get0o86ount,..; fire3able tructure6hanged,.; K '' set6olumn6ount,. public void set0o86ount,int ro86ount. F setLum0o8s,ro86ount.; K '' set0o86ount,. public void setLum0o8s,int ro86ount. F int old I get0o86ount,.; Ing. Javier Alberto Manrique Quionez Pgina 2B
Archivo binarios de datos if ,old II ro86ount. F return; K data*rray I ne8 *rrayList,data*rray.subList,7, ro86ount = 1..; '' data*rray.set ize,ro86ount.; if ,ro86ount PI old. F fire3able0o8s1eleted,ro86ount, old = 1.; K else F "ustify0o8s,old, ro86ount.; fire3able0o8s:nserted,old, ro86ount = 1.; K K public void set6olumn:dentifiers,;b"ectGH ne8:dentifiers. F set6olumn:dentifiers,convert3o*rrayList,ne8:dentifiers..; K public void set6olumn:dentifiers,*rrayList column:dentifiers. F set1ata*rray,data*rray, column:dentifiers.; K public void ne80o8s*dded,3able/odelEvent e. F "ustify0o8s,e.get5irst0o8,., e.getLast0o8,. N 1.; fire3able6hanged,e.; K '' ne80o8s*dded,. public void ne81ata*vailable,3able/odelEvent event. F fire3able6hanged,event.; K public void ro8s0emoved,3able/odelEvent event. F fire3able6hanged,event.; K K
Pgina 2>