Sei sulla pagina 1di 38

12/12/2016

AD02_Contenidos

Manejodeficheros.
Casoprctico

AnaestempezandoacursarlaFormacinenCentrosdeTrabajo
(FCT).
Ya ha tenido unas reuniones con Juan y Mara, para saber cmo
se trabaja en BK programacin. Aunque est haciendo el mdulo
de FCT en esta empresa, ya sabe que a veces tendr que salir a
otras empresas acompaada de sus tutores para ver los requisitos
de los sistemas que la empresa tenga que informatizar y, en
ocasiones, Antonio, quizs tambin se apunte para echar una
mano.
Anaestnerviosa,tambinilusionada,ytienemuchasganasdeconocerdecercalarealidaddeloque
haestudiadoenclase.
Ahora ver el uso de los conocimientos adquiridos de diferentes mdulos, y buscar respuestas a
posiblesdudasquesevayanplanteando.
En clase les haban explicado la importancia de los ficheros en el acceso a datos. Es importante
repasarlosconceptospiensaAna.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

1/38

12/12/2016

AD02_Contenidos

1.Introduccin.
Si ests estudiando este mdulo, es probable que ya hayas estudiado el de
programacin, por lo que no te sern desconocidos muchos conceptos que se
tratanenestetema.
Ya sabes que cuando apagas el ordenador, los datos de la memoria RAM se
pierden. Un ordenador utiliza ficheros para guardar los datos. Piensa que los
datosdelascancionesqueoyesenmp3,laspelculasquevesenformatoavi,
o mp4, etc., estn, al fin y al cabo, almacenadas en ficheros, los cuales estn
grabadosenunsoportecomosonlosdiscosduros,DVD,pendrives,etc.
Se llama a los datos que se guardan en ficheros datos persistentes, porque
persisten ms all de la ejecucin de la aplicacin que los trata. Los ordenadores almacenan los ficheros en
unidades de almacenamiento secundario como discos duros, discos pticos, etc. En esta unidad veremos, entre
otrascosas,cmohacerconJavalasoperacionesdecrear,actualizaryprocesarficheros.
A las operaciones, que constituyen un flujo de informacin del programa con el exterior, se les conoce como
Entrada/Salida(E/S).
LasoperacionesdeE/SenJavalasproporcionaelpaqueteestndardelaAPIdeJavadenominado java.ioque
incorpora
interfaces,clasesyexcepcionesparaaccederatodotipodeficheros.
La librera java.io contiene las clases necesarias para gestionar las operaciones de entrada y salida con Java.
EstasclasesdeE/Slaspodemosagruparfundamentalmenteen:
Clasesparaleerentradasdesdeunflujodedatos.
Clasesparaescribirentradasaunflujodedatos.
Clasesparaoperarconficherosenelsistemadeficheroslocal.
Clasesparagestionarlaserializacindeobjetos.
Enlaimagenpuedesverlasclasesdelasquesedisponeen java.io.

Autoevaluacin

Indicasilaafirmacinesverdaderaofalsa:
Losdatospersistentesperdurantrasfinalizarlaejecucindelaaplicacinquelostrata.
Verdadero.

Falso.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

2/38

12/12/2016

AD02_Contenidos

2.Clasesasociadasalasoperacionesdegestinde
ficherosydirectorios.

Casoprctico

AnalecomentaaAntonioPorloquenoshancomentado,vamos
atenerqueutilizarbastantelosficheros.Cmotemanejastcon
ellos?
PuestanbiencomotrespondeAntonio,yotambinestudiel
mdulodeProgramacin.Esquenorecuerdasqueenelmdulo
estudiamosuntemasobreficheros?
S,peroesque,comohabatantosmtodosparalistar,renombrar
archivos, etc., ya casi no me acuerdo y eso que hace poco que lo
estudiamoscontestaAna.
Antonio intenta tranquilizar a Ana y le dice que no se preocupe, que en cuanto se les presente la
ocasindetenerqueprogramarconficheros,seguroquenotienenproblemayrefrescanlosconceptos
queaprendieronensuda.

Enefecto,talycomodicenAnayAntonio,haybastantesmtodosinvolucrados
en las clases que en Java nos permiten manipular ficheros y carpetas o
directorios.
Vamos a ver la clase File que nos permite hacer unas cuantas operaciones
conficheros,tambinveremoscmofiltrarficheros,osea,obteneraquelloscon
una caracterstica determinada, como puede ser que tengan la
extensin
.odt, o la que nos interese, y por ltimo, en este apartado tambin veremos
comocrearyeliminarficherosydirectorios.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

3/38

12/12/2016

AD02_Contenidos

2.1.ClaseFile.
Paraqusirveestaclase,qunospermite?Laclase Fileproporciona
unarepresentacinabstractadeficherosydirectorios.
Esta clase, permite examinar y manipular archivos y directorios,
independientemente de la plataforma en la que se est trabajando: Linux,
Windows,etc.
Las instancias de la clase File representan nombres de archivo, no los
archivosensmismos.
El archivo correspondiente a un nombre puede ser que no exista, por esta
raznhabrquecontrolarlasposiblesexcepciones.
Unobjetodeclase Filepermiteexaminarelnombredelarchivo,descomponerloensuramadedirectoriosocrear
elarchivosinoexiste,pasandoelobjetodetipo Fileaunconstructoradecuadocomo FileWriter(File f),que
recibecomoparmetrounobjeto File.
Paraarchivosqueexisten,atravsdelobjeto File,unprogramapuedeexaminarlosatributosdelarchivo,cambiar
sunombre,borrarloocambiarsuspermisos.Dadounobjeto File,podemoshacerlassiguientesoperacionescon
l:
Renombrar el archivo, con el
mtodo renameTo(). El objeto File dejar de referirse al archivo
renombrado,yaqueel Stringconelnombredelarchivoenelobjeto Filenocambia.
Borrarelarchivo,conelmtodo delete().Tambin,con deleteOnExit()seborracuandofinalizalaejecucin
delamquinavirtualJava.
Crearunnuevoficheroconunnombrenico.Elmtodoesttico createTempFile()creaunficherotemporaly
devuelve un objeto File que apunta a l. Es til para crear archivos temporales, que luego se borran,
asegurndonostenerunnombredearchivonorepetido.
Establecer la fecha y la hora de modificacin del archivo con setLastModified(). Por ejemplo, se podra
hacer: new File("prueba.txt").setLastModified(new Date().getTime()); para establecerle la fecha actual al
ficheroqueselepasacomoparmetro,enestecasoprueba.txt.
Crearundirectorio,medianteelmtodo mkdir().Tambinexiste mkdirs(),quecrealosdirectoriossuperiores
sinoexisten.
Listar el contenido de un directorio. Los mtodos list() y listFiles() listan el contenido de un directorio.
list() devuelve un vector de String con los nombres de los archivos, listFiles() devuelve un vector de
objetos File.
Listarlosnombresdearchivodelarazdelsistemadearchivos,medianteelmtodoesttico listRoots().

Autoevaluacin

Sealasilaafirmacinesverdaderaofalsa:
Podemosestablecerlafechademodificacindeunarchivomedianteelmtodo renameTo().
Verdadero.

Falso.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

4/38

12/12/2016

AD02_Contenidos

2.1.1.ClaseFile(II).
Mediante la clase File, podemos ver si un fichero cualquiera, digamos por
ejemplo texto.txt, existe o no. Para ello, nos valemos del mtodo exists()
delaclase File.Hacemosreferenciaaeseficheroenconcretoconelcdigo
siguiente:

Filef=newFile("C:\texto.txt");

Enelsiguienterecursopuedesdescargarunapequeaaplicacinenlaquese
usa File. Como vers, permite listar el contenido de la carpeta que pongas
enuncampodetexto,introduciendoelresultadoenun JList.
Listararchivos. (0.01MB)
Pero,qupasasinosinteresacopiarunfichero,cmoloharamos?
Con la clase File no es suficiente, necesitamos saber ms, en concreto, necesitamos hablar de los flujos, como
vamosavermsadelante.

Parasaberms

Enesteenlacepuedesverejemplosparaobtenerlaspropiedadesdelosficheros,usandolaclase File:
Propiedadesdelosficheros
EjemplocreandocarpetasodirectoriosenJava

Autoevaluacin

Sealalaopcincorrecta.Conlaclase Filepodemos:
Crearficherostemporales.
Creardirectorios.
Renombrarunarchivo.
Todassoncorrectas.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

5/38

12/12/2016

AD02_Contenidos

2.2.InterfaceFilenameFilter.
Hemos visto como obtener la lista de ficheros de una carpeta o directorio. A
veces, nos interesa ver no la lista completa, sino los archivos que encajan con
undeterminadocriterio.
Por ejemplo, nos puede interesar un filtro para ver los ficheros modificados
despus de una fecha, o los que tienen un tamao mayor del que el que
indiquemos,etc.
El interface FilenameFilter se puede usar para crear filtros que establezcan
criterios de filtrado relativos al nombre de los ficheros. Una clase que lo
implementedebedefinireimplementarelmtodo:

booleanaccept(Filedir,Stringnombre)

Este mtodo devolver verdadero en el caso de que el fichero cuyo nombre se indica en el parmetro nombre
aparezcaenlalistadelosficherosdeldirectorioindicadoporelparmetro dir.
En el siguiente ejemplo vemos cmo se listan los ficheros de la carpeta c:\datos que tengan la extensin .txt.
Usamos tryy catchparacapturarlasposiblesexcepciones,comoquenoexistadichacarpeta.
Listarficherosdeunacarpeta,filtrando.

Parasaberms

En el ejemplo anterior se utiliza la funcin endsWith. Por si no sabes para que se emplea, y para ver
otrasmssobretratamientodecadenas,sigueesteenlace:
Operacionesconcadenas.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

6/38

12/12/2016

AD02_Contenidos

2.3.Rutasdelosficheros
Enlosejemplosquevemoseneltema,estamosusandolarutadelosficherostaly
comoseusanenMSDOS,oWindows,esdecir,porejemplo:

C:\\datos\Programacion\fichero.txt

Cuando operamos con rutas de ficheros, el carcter separador entre directorios o


carpetas suele cambiar dependiendo del sistema operativo en el que se est
ejecutandoelprograma.
Paraevitarproblemasenlaejecucindelosprogramascuandoseejecutenenunou
otro sistema operativo y, por tanto, persiguiendo que nuestras aplicaciones sean lo
msportablesposibles,serecomiendausarenJava: File.separator.
Podramoshacerunafuncinque,alpasarleunaruta,nosdevolvieralaadecuadasegnelseparadordelsistema
actual,delsiguientemodo:

Cdigodeseparadorderutas.

Autoevaluacin

Cuando trabajamos con fichero en Java, no es necesario capturar las excepciones, el sistema
seocupaautomticamentedeellas.
Verdadero.

Falso.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

7/38

12/12/2016

AD02_Contenidos

2.4.Creacinyeliminacindeficherosydirectorios.
Cuandoqueramoscrearunfichero,podemosprocederdelsiguientemodo:

Cdigodecrearunfichero.
Para borrar un fichero podemos usar la clase File, comprobando previamente si existe el fichero, del siguiente
modo:

Paracreardirectorios,podramoshacer:

Cdigodecrearundirectorio.
Para borrar un directorio con Java, tendremos que borrar cada uno de los ficheros y directorios que ste
contenga. Al poder almacenar otros directorios, se podra recorrer
recursivamente el directorio para ir borrando
todoslosficheros.
Sepuedelistarelcontenidodeldirectorioeirborrandocon:

File[]ficheros=directorio.listFiles();

Sielelementoesundirectorio,losabemosmedianteelmtodo isDirectory().

Autoevaluacin

Indicasilasiguienteafirmacinesverdaderaofalsa:
Podemosestableceruncriterioparalistarficherosmediante FileNameFilter.
Verdadero.

Falso.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

8/38

12/12/2016

AD02_Contenidos

3.Flujos.

Casoprctico

Ana y Antonio saben que van a tener que ayudar a Juan y a


Mara en labores de programacin de ficheros en Java. As que,
adems, de la clase File, van a necesitar utilizar otros conceptos
relacionados con la entrada y salida: los flujos o streams. Ana
recuerdaquehaydostiposdeflujos:flujosdecaracteresyflujosde
bytes.

Un programa en Java, que necesita realizar una operacin de


entrada/salida(enadelanteE/S),lohaceatravsdeunflujoo stream.
Un flujo es una abstraccin de todo aquello que produce o
consumeinformacin.
Lavinculacin de este flujo al dispositivo fsico la hace el sistema
deentradaysalidadeJava.
LasclasesymtodosdeE/Squenecesitamosemplearsonlasmismasindependientementedeldispositivoconel
queestemosactuando.Luego,elncleodeJavasabrsitienequetratarconelteclado,elmonitor,unsistemade
archivosounsocketderedliberandoalprogramadordetenerquesaberconquinestinteractuando.
Javadefinedostiposdeflujosenelpaquete java.io:
Bytestreams(8bits):proporcionalonecesarioparalagestindeentradasysalidasdebytesysu uso est
orientado a la lectura y escritura de datos binarios. El tratamiento del flujo de bytes viene determinado por
dos clases abstractas que son InputStream y OutputStream Estas dos clases definen los mtodos que sus
subclases tendrn implementados y, de entre todos, destacan read()y write() que leen y escriben bytes de
datosrespectivamente.
Character streams (16 bits): de manera similar a los flujos de bytes, los flujos de caracteres estn
determinados por dos clases abstractas, en este caso: Reader y Writer. Dichas clases manejan flujos de
caracteresUnicode.Ytambindeellasderivansubclasesconcretasqueimplementanlosmtodosdefinidos
en ellas siendo los ms destacados los mtodos read() y write() que leen y escriben caracteres de datos
respectivamente.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

9/38

12/12/2016

AD02_Contenidos

3.1.Flujosbasadosenbytes.
Para el tratamiento de los flujos de bytes, hemos dicho que Java tiene dos clases
abstractasqueson InputStreamy OutputStream.
Losarchivosbinariosguardanunarepresentacindelosdatosenelarchivo,esdecir,
cuando guardamos texto no guardan el texto en si, sino que guardan su
representacinenuncdigollamado
UTF8.
Las clases principales que heredan de OutputStream, para la escritura de ficheros
binariosson:
FileOutputStream:

escribe bytes en un fichero. Si el archivo existe, cuando


vayamos a escribir sobre l, se borrar. Por tanto, si queremos aadir los
datos al final de ste, habr que usar el constructor FileOutputStream(String filePath, boolean append),
poniendo appenda true.
ObjectOutputStream: convierte objetos y variables en vectores de bytes que pueden ser escritos en un
OutputStream.
DataOutputStream,quedaformatoalostiposprimitivosyobjetos String,convirtindolosenunflujodeforma
que cualquier DataInputStream, de cualquier mquina, los pueda leer. Todos los mtodos empiezan por
" write",como writeByte(), writefloat(),etc.
DeInputStream,paralecturadeficherosbinarios,destacamos:
FileInputStream:leebytesdeunfichero.
ObjectInputStream:convierteenobjetosyvariableslosvectoresdebytesledosdeunInputStream.

Enelsiguienteejemplosepuedevercmoseescribeaunarchivobinariocon DataOutputStream:
Escrituraaficherobinario.

Resumentextualalternativo

Cdigodeproyectodeescrituraaficherobinario. (0.01MB)
Enelsiguienteenlacepuedesvercmoleerdeunarchivobinariomediantelaclase FileInputStream:
Leerbinario

Autoevaluacin

Sealasilaafirmacinesverdaderaofalsa:
https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

10/38

12/12/2016

AD02_Contenidos

Podemosescribirdatosbinariosaficherosutilizandoelmtodo appenddelaclase DataOutputStream.


Verdadero.

Falso.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

11/38

12/12/2016

AD02_Contenidos

3.2.Flujosbasadosencaracteres.
Paralosflujosdecaracteres,Javadisponededosclasesabstractas: Reader y
Writer.
Si se usan slo FileInputStream, FileOuputStream, FileReader o
FileWriter, cada vez que se efecta una lectura o escritura, se hace
fsicamente en el disco duro. Si se leen o escriben pocos caracteres cada vez,
elprocesosehacecostosoylentoporlosmuchosaccesosadiscoduro.
Los

BufferedReader, BufferedInputStream, BufferedWriter y


BufferedOutputStream aaden un
buffer intermedio. Cuando se lee o

escribe,estaclasecontrolalosaccesosadisco.As,sivamosescribiendo,seguardarnlosdatoshastaquehaya
bastantesdatoscomoparahacerunaescrituraeficiente.
Al leer, la clase leer ms datos de los que se hayan pedido. En las siguientes lecturas nos dar lo que tiene
almacenado, hasta que necesite leer otra vez fsicamente. Esta forma de trabajar hace los accesos a disco ms
eficientesyelprogramaseejecutamsrpido.
Enelsiguienteejemplo,puedesvercmoseleeunarchivoguardadoeneldirectorioraz,denominadoarchivo.txt,
cuandosepulsaelbotndelaaplicacin.Elcontenidoseintroduceenelreadetexto.
ProyectoJavaparaleerficherodetexto. (0.01MB)

Debesconocer

Vdeosobreelpaquetejava.io.
Vdeosobre java.io.

Conoce mejor un paqu...

Resumentextualalternativo

Parasaberms

EnesteenlacepuedesaprendermssobreinternacionalizacinyUnicode.
Internacionalizacin

Autoevaluacin

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

12/38

12/12/2016

AD02_Contenidos

Mediante las clases que proporcionan buffers se pretende que se hagan lecturas y escrituras
fsicasadisco,loantesposibleycuantasmsmejor.
Verdadero.

Falso.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

13/38

12/12/2016

AD02_Contenidos

4.Formasdeaccesoaunfichero.

Casoprctico

El momento de programar ha llegado, y Antonio se pregunta qu


opcin ser mejor para el acceso a los ficheros: si acceso
secuencialoaleatorio.Quusoselevaadaraestosficheros?,
para qu van a servir cuando la aplicacin informtica est en
funcionamiento?Esaeslacuestinclave,piensaAntonio.

HemosvistoqueenJavapuedesutilizardostiposdeficheros(detextoobinarios)
ydostiposdeaccesoalosficheros(secuencialoaleatorio).Sibien,ysegnla
literatura que consultemos, a veces se distingue una tercera forma de acceso
denominadaconcatenacin,tuberasopipes.
Accesoaleatorio:losarchivosdeaccesoaleatorio,aligualqueloquesucede
usualmenteconlamemoria(RAM=RandomAccessMemory),permitenacceder
a los datos en forma no secuencial, desordenada. Esto implica que el archivo
debeestardisponibleensutotalidadalmomentodeseraccedido,algoqueno
siempreesposible.
Acceso secuencial: En este caso los datos se leen de manera secuencial,
desdeelcomienzodelarchivohastaelfinal(elcualmuchasvecesnoseconoce
apriori).Esteeselcasodelalecturadeltecladoolaescrituraenunaconsola
detexto,nosesabecundoeloperadorterminardeescribir.
Concatenacin (tuberas o "pipes"): Muchas veces es til hacer conexiones entre programas que se
ejecutansimultneamentedentrodeunamismamquina,demodoqueloqueunoproduceseenvaporun
"tubo" para ser recibido por el otro, que est esperando a la salida del tubo. Las tuberas cumplen esta
funcin.

Parasaberms

EnesteenlacepuedesaprendermssobretuberasenJava.
Tuberas

Citasparapensar

Elfuturotienemuchosnombres.Paralosdbilesesloinalcanzable.Paralostemerosos,
lodesconocido.Paralosvalienteseslaoportunidad.
VctorHugo.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

14/38

12/12/2016

AD02_Contenidos

4.1.Operacionesbsicassobreficherosdeaccesosecuencial.
Como operaciones ms comunes en ficheros de acceso secuencial,
tenemoselaccesopara:
Crearunficherooabrirloparagrabardatos.
Leerdatosdelfichero.
Borrarinformacindeunfichero.
Copiardatosdeunficheroaotro.
Bsquedadeinformacinenunfichero.
Cerrarunfichero.
Veamosestasoperacionesenunosejemploscomentados.
Enesteprimerejemplo,vemoscmosecreaelficherosinoexiste,oseabreparaaadirdatossiyaexiste:
Grabardatosenficherosecuencial.

Resumentextualalternativo

Grabarenficherosecuencial. (0.01MB)
Enesteejemploverscmopodemoscopiarunarchivoorigen,aotrodestino,desdelalneadecomandos.
Copiarfichero.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

15/38

12/12/2016

AD02_Contenidos

Resumentextualalternativo

Copiarfichero. (0.01MB)
En este ltimo ejemplo, has visto cmo usar la clase bsica que nos permite utilizar un fichero para escritura de
bytes:laclase FileOutputStream.
Paramejorarlaeficienciadelaaplicacinreduciendoelnmerodeaccesosalosdispositivosdesalidaenlosque
sealmacenaelfichero,sepuedemontarunbufferasociadoalflujodetipo FileOutputStream.Deesoseencarga
la clase BufferedOutputStream, que permite que la aplicacin pueda escribir bytes en el flujo sin que
necesariamentehayaquellamaralsistemaoperativoparacadabyteescrito.

Debesconocer

Enesteenlacepuedesverunejemploconbuffer.
Flujosdesalidaconbuffer.

Cuando se trabaja con ficheros de texto se recomienda usar las clases Reader, para entrada o lectura de
caracteres, y Writer para salida o escritura de caracteres. Estas dos clases estn optimizadas para trabajar con
caracteresycontextoengeneral,debidoaquetienenencuentaquecadacarcterUnicodeestrepresentadopor
dosbytes.
Lassubclasesde Writery Readerquepermitentrabajarconficherosdetextoson:
FileReader,paralecturadesdeunficherodetexto.Creaunflujodeentradaquetrabajaconcaracteresenvez

deconbytes.
FileWriter,paraescriturahaciaunficherodetexto.Creaunflujodesalidaquetrabajaconcaracteresenvez
deconbytes.
Tambinsepuedemontarunbuffersobrecualquieradelosflujosquedefinenestasclases:
BufferedWriterseusaparamontarunbuffersobreunflujodesalidadetipo FileWriter.
BufferedReaderseusaparamontarunbuffersobreunflujodeentradadetipo FileReader.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

16/38

12/12/2016

AD02_Contenidos

Autoevaluacin

Sealasilaafirmacinesverdaderaofalsa:Laclase Readerestoptimizadaparatrabajarconficheros
binarios.
Verdadero.

Falso.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

17/38

12/12/2016

AD02_Contenidos

4.1.1.Operacionesbsicassobreficherosdeaccesosecuencial(II).
Veamosunejemplodelecturautilizandoun BufferReader.
Laclaselapuedesdescargardeaqu:
ClaseparaleerdesdeficheroconBuffer.
Enunodelosejemplosanteriores,hasvistocomopodemosgrabarinformacinaun
archivo secuencial, concretamente nombre, apellidos y edad de las personas que
vayamosintroduciendo.
Ahora vamos a ver cmo buscar en un archivo secuencial, usando ese mismo
ejemplo.Laideaesquealserunficherosecuencial,tenemosqueabrirloeirleyendo
hastaencontrareldatoquebuscamos,siesqueloencontramos.

Elproyectocompletolopuedesdescargardeaqu:
ProyectoJavaparabuscarenficherosecuencial. (0.01MB)

Parasaberms

Aunqueestneningls,haymuchsimosejemploseinformacinsobrelaclase java.io.
JavaI/O(Input/Output)

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

18/38

12/12/2016

AD02_Contenidos

4.2.Operacionesbsicassobreficherosdeaccesoaleatorio.
A menudo, no necesitas leer un fichero de principio a fin, sino simplemente
acceder al fichero como si fuera una base de datos, donde se salta de un
registroaotrocadaunoendiferentespartesdelfichero.Javaproporcionauna
clase RandomAccessFileparaestetipodeentrada/salida.
Estaclase:
Permite leer y escribir sobre el fichero, no es necesario dos clases
diferentes.
Necesita que le especifiquemos el modo de acceso al construir un
objetodeestaclase:slolecturaobienlecturayescritura.
Posee mtodos especficos de desplazamiento como seek(long
posicion) o skipBytes(int desplazamiento) para poder movernos de un
registroaotrodelfichero,oposicionarnosdirectamenteenunaposicinconcretadelfichero.
Poresascaractersticasquepresentalaclase,unarchivodeaccesodirectotienesusregistrosdeuntamaofijoo
predeterminadodeantemano.
Laclaseposeedosconstructores:
RandomAccessFile(Filefile,Stringmode).
RandomAccessFile(Stringname,Stringmode).

Enelprimercasosepasaunobjeto Filecomoprimerparmetro,mientrasqueenelsegundocasoesunString.
Elmodoes:"r"siseabreenmodolecturao"rw"siseabreenmodolecturayescritura.
A continuacin puedes ver una presentacin en la que se muestra cmo abrir y escribir en un fichero de acceso
aleatorio. Tambin, en el segundo cdigo descargable, se presenta el cdigo correspondiente a la escritura y
localizacinderegistrosenficherosdeaccesoaleatorio.
Escribirenficherosdeaccesoaleatorio.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

19/38

12/12/2016

AD02_Contenidos

Resumentextualalternativo

Claseparaescribirenficherosdeaccesoaleatorio.
Descargarproyectoparaescribirylocalizardatosenficherosdeaccesoaleatorio. (0.01MB)

Autoevaluacin

Indicasilaafirmacinesverdaderaofalsa:
Unobjetodelaclase RandomAccessFilenecesitaelmododeaccesoalcrearelobjeto.
Verdadero.

Falso.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

20/38

12/12/2016

AD02_Contenidos

5.TrabajoconficherosXML:analizadoressintcticos
(parser)yvinculacin(binding).

Casoprctico

Mara y Juan estn trabajando en un proyecto comn, una


aplicacinpara"FarmaciaManolndeBenidorm".Hayunapartede
la aplicacin que no hicieron ellos, sino el hermano del
farmacutico, que tiene ciertos conocimientos, por su inters
autodidacta de la informtica. Parece ser queArturn, el hermano
de Manoln, utiliz ficheros XML para guardar informacin de la
aplicacin. Juan y Mara estn contemplando la posibilidad de
aprovechar lo que hay desarrollado, estudiando la aplicacin y
viendo si podran analizar los ficheros XML que ya existen para
obtenerlainformacinquedesean.

Probablemente hayas estudiado ya XML, bien porque hayas cursado el mdulo Lenguajes de
marcas y sistemas de gestin de informacin, o bien porque lo conozcas por tu cuenta. Si no
conoces XML, te recomendamos que te familiarices con l, hay mltiples tutoriales y cursos en
Internet.
ElmetalenguajeXMLsecreaparaevitarproblemasdeinteroperabilidadentreplataformasyredes.
Conlseconsigueunsoporteestndarparaelintercambiodedatos:noslolosdatosestnenun
formato estndar sino tambin la forma de acceder a ellos. Y entre las ventajas de su uso
destacamos:
Facilita el intercambio de informacin entre distintas aplicaciones ya que se basa en
estndaresaceptados.
Proporciona una visin estructurada de la informacin, lo que permite su posterior
tratamientodeformalocal.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

21/38

12/12/2016

AD02_Contenidos

5.1.Conceptosprevios.
Cmo se trabaja con datos XML desde el punto de vista del desarrollador de
aplicaciones?
UnaaplicacinqueconsumeinformacinXMLdebe:
Leerunficherodetextocodificadosegndichoestndar.
Cargarlainformacinenmemoriay,desdeall...
Procesar esos datos para obtener unos resultados (que posiblemente
tambinalmacenardeformapersistenteenotroficheroXML).
El proceso anterior se enmarca dentro de lo que se conoce en informtica como "parsing" o anlisis lxico
sintctico, y los programas que lo llevan a cabo se denominan "parsers" o analizadores (lxicosintcticos). Ms
especficamente podemos decir que el "parsing XML" es el proceso mediante el cual se lee y se analiza un
documento XML para comprobar que est bien formado para, posteriormente, pasar el contenido de ese
documentoaunaaplicacinclientequenecesiteconsumirdichainformacin.
Schema: Un esquema (o schema) es una especificacin XML que dicta los componentes permitidos de un
documento XML y las relaciones entre los componentes. Por ejemplo, un esquema identifica los elementos que
pueden aparecer en un documento XML, en qu orden deben aparecer, qu atributos pueden tener, y qu
elementossonsubordinados(estoes,sonelementoshijos)paraotroselementos.UndocumentoXMLnotienepor
qutenerunesquema,perosilotiene,debeatenerseaeseesquemaparaserundocumentoXMLvlido.

Parasaberms

Enelsiguienteenlacedelawikipediapuedesverelconceptodeesquemayalgnqueotroejemplo:
EsquemasXML

Autoevaluacin

Disilaafirmacinesverdaderaofalsa:
XMLhacemsfcilelintercambiodeinformacinentresistemas.
Verdadero.

Falso.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

22/38

12/12/2016

AD02_Contenidos

5.2.Definiciones.
Qu es y para qu sirve JAXB (Java Architecture for XML Binding)? JAXB
simplifica el acceso a documentos XML representando la informacin obtenida
delosdocumentosXMLenunprogramaenformatoJava,osea,proporcionaa
los desarrolladores de aplicaciones Java, una forma rpida para vincular
esquemasXMLarepresentacionesJava.
JAXBproporcionamtodospara,apartirdedocumentosXML,obtenerrboles
de contenido (generados en cdigo Java), para despus operar con ellos o
manipular los los mismos en una aplicacin Java y generar documentos XML
conlaestructuradelosiniciales,peroyamodificados.
Parsear un documento XML consiste en "escanear" el documento y dividirlo o separarlo lgicamente en piezas
discretas.Elcontenidoparseadoestentoncesdisponibleparalaaplicacin.
Binding:Bindingovincularunesquema(schema)significagenerarunconjuntodeclasesJavaquerepresentanel
esquema.
Compilador de esquema o schema compiler: liga un esquema fuente a un conjunto de elementos de programa
derivados.LavinculacinsedescribemedianteunlenguajedevinculacinbasadoenXML.
>Bindingruntime
framework:proporcionaoperacionesdeunmarshallingymarshallingparaacceder,manipular
yvalidarcontenidoXMLusandounesquemaderivadooelementosdeprograma.
Marshalling:esunprocesodecodificacindeunobjetoenunmediodealmacenamiento,normalmenteunfichero.
ProporcionaaunaaplicacinclientelacapacidadparaconvertirunrboldeobjetosJavaJAXBaficherosXML.Por
defecto,elmarshallerusacodificacinUTF8cuandogeneralosdatosXML.
Unmarshalling: proporciona a una aplicacin cliente la capacidad de convertir datos XML a objetos Java JAXB
derivados.

Parasaberms

Hay muchos "parsers" conocidos, como SAX (Simple API for XML). SAX es un API para parsear
ficheros XML. Proporciona un mecanismo para leer datos de un documento XML. Otra alternativa es
DOM(DocumentObjectModel).
TienesmsinformacinsobreDOMenlawikipedia:
DOM
EnesteenlaceseveunejemplodecmoparsearunficheroXMLmedianteSAX.
Parsear

Procesar un chero XM...

Resumentextualalternativo

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

23/38

12/12/2016

AD02_Contenidos

5.3.IntroduccinaJAXB.
JAXBpermitemapearclasesJavaarepresentacionesenXMLyviceversa.
JAXBproporcionadosprincipalescaractersticas:
Lacapacidaddeserializar(marshalling)objetosJavaaXML.
Loinverso,esdecir,deserializar(unmarshalling)XMLaobjetosJava.
O sea que JAXB permite almacenar y recuperar datos en memoria en cualquier formato XML, sin la
necesidad de implementar un conjunto especfico de rutinas XML de carga y salvaguarda para la estructura
declasesdelprograma.
ElcompiladordeJAXB(schemacompiler)permitegenerarunaseriedeclasesJavaquepodrnserllamadasdesde
nuestrasaplicacionesatravsdemtodossetsygetsparaobteneroestablecerlosdatosdeundocumentoXML.
ElfuncionamientoesquemticoalusarJAXBsera:
Crearunesquema(fichero .xsd)quecontendrlasestructuradelasclasesquedeseamosutilizar.
Compilar con el JAXB compiler (bien con un IDE como NetBeans o desde lnea de comandos con el
comandoxjc)esefichero .xsd,demodoquenosproducirlos
POJOs,osea,unaclaseporcadaunode
lostiposquehayamosespecificadoenelfichero .xsd.Estonosproducirlosficheros .java.
Compilaresasclasesjava.
CrearundocumentoXML:validadoporsucorrespondienteesquemaXML,oseaelfichero.xsd,secreaun
rboldeobjetos.
Ahora se puede parsear el documento XML, accediendo a los mtodos gets y sets del rbol de objetos
generadosporelprocesoanterior.Assepodrmodificaroaadirdatos.
Despusderealizarloscambiosqueseestimen,serealizaunprocesoparasobrescribireldocumentoXML
ocrearunnuevodocumentoXML.

Autoevaluacin

UnschemapermitevalidarundocumentoXML.
Verdadero.

Falso.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

24/38

12/12/2016

AD02_Contenidos

5.4.FuncionamientodeJAXB.
ParaconstruirunaaplicacinJAXBnecesitamostenerunesquemaXML.
Tras obtener el esquema XML, seguimos los siguientes pasos para
construirlaaplicacinJAXB:
1.Escribir el esquema: es un documento XML que contiene la
estructura que se tomar como indicaciones para construir las clases.
Estas indicaciones pueden ser, por ejemplo, el tipo primitivo al que se
debeunirunvalordeatributoenlaclasegenerada.
2.GenerarlosficherosfuentedeJava:paraestousamoselcompilador
de esquema, ya que ste toma el esquema como entrada de
informacin. Cuando se haya compilado el cdigo fuente, podremos
escribirunaaplicacinbasadaenlasclasesqueresulten.
3.Construir el rbol de objetos Java: con nuestra aplicacin, se genera el rbol de objetos java, tambin
llamado rbol de contenido, que representa los datos XML que son validados con el esquema. Hay dos
formasdehaceresto:
a.
Instanciandolasclasesgeneradas.
b.Invocando al mtodo unmarshall de una clase generada y pasarlo en el documento. El mtodo
unmarshalltomaundocumentoXMLvlidoyconstruyeunarepresentacinderboldeobjetos.
4.Accederalrboldecontenidousandonuestraaplicacin:ahorapodemosaccederalrboldecontenido y
modificarsusdatos.
5.Generar un documento XML desde el rbol de contenido. Para poder hacerlo tenemos que invocar al
mtodo marshallsobreelobjetorazdelrbol.
Aunqueestospasosqueacabamosdecomentarteteparezcanalgocomplicados,vamosaverunejemplosencillo,
enelqueclarificaremostodoesto,comprobandoquenoestandifcilcomoparece.
Vamosasuponerunaestructuradeunarchivoquepodrausarseenunalmacndistribuidordemedicamentos.El
fichero albaran.xsd tiene la estructura que el almacn usa cuando enva un pedido de medicamentos que le ha
hechounafarmacia.
Puedesdescargarloparaexaminarloaqu:
Ficheroalbaran.xsd (1KB)
Vamosavereldesarrollodelproyectoenlasiguientepresentacin:
EjemplodeproyectosencilloconJAXB.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

25/38

12/12/2016

AD02_Contenidos

Resumentextualalternativo

Elproyectoresultantetrasseguirlospasosdelapresentacinseencuentraaqu:
ProyectoJAXB (0.03MB)

Parasaberms

Enelsiguienteenlacepuedesverunejemplopasoapasoenelque:
SecreaelficherodeesquemaXML.
SecreaunproyectonuevoconNetBeans.
SeaadeunJAXBBindingutilizandoelficheroXSDcreadoanteriormente.
SeaadeunserviciowebyseutilizalasclasesJavaJAXBBindingcomountipodeobjeto.
EjemploconJAXB

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

26/38

12/12/2016

AD02_Contenidos

6.LibrerasparaconversindedocumentosXMLaotros
formatos.

Casoprctico

MaralediceaJuan que una buena prctica para Antonio y Ana


seraquehicieranlosinformesquenecesitanparalaaplicacinde
lafarmacia.
Tan solo tenemos que instruirles un poco en JasperReport e
indicarles unos cuantos tutoriales, seguro que lo hacen bien le
comentaMaraaJuan.
Mara decide, adems, consultar a su amiga Blanca, que es
experta en JasperReport y trabaja en otra empresa, qu tutoriales
deInternetodecualquierotrafuenterecomendaraaunosprincipiantesenestamateria.

En la mayora de aplicaciones informticas, hay que mostrar la informacin


resultante de los procesos que se ejecutan, sobre todo en aplicaciones que
generan informacin que implica tomar decisiones comerciales. Dicha
informacinestalmacenadanormalmenteenbasesdedatosoenarchivos.
Hoy en da, XML est muy extendido, y muchas empresas guardan la
informacinenficherosobasesdedatosconeseformato.
Hay muchos productos o herramientas informticas que permiten convertir
documentosXMLaotrosformatos.
En nuestro caso, vamos a optar por una herramienta que permite generar informes de todo tipo en Java de una
formasencilla:JasperReport.
Esta herramienta permite generar informes electrnicos en formato pdf, quizs el formato ms usado debido a su
portabilidad entre sistemas conservando la apariencia. Pero existen muchos ms: xls, html, rtf, csv, xml,
etc.

Parasaberms

En el siguiente enlace puedes ver un tutorial de otra herramienta de conversin de XML a otros
formatos.
XSL

Autoevaluacin

JasperReportpermitegenerardocumentosenformatohtml.
Verdadero.

Falso.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

27/38

12/12/2016

AD02_Contenidos

6.1.IntroduccinaJasperReport.
EnJava,duranteuntiempo,lageneracindeinformesfueunodelospuntos
dbilesdellenguaje,perohoyenda,existenmuchaslibrerasyherramientas
dedicadas(variasdeellas,de
cdigoabierto)paralarpidageneracinde
informes.JasperReports,esunadelasmsconocidas.
JasperReports es una herramienta que consta de un poderoso motor para la generacin de informes. Est
empaquetadaenunarchivoJARypuedeserutilizadacomounalibrera,laculpodemosintegrarencualquierIDE
dedesarrolloenJavaparadesarrollarnuestrasaplicaciones.EstescritatotalmenteenJava,sucdigoesabiertoy
estotalmentegratuitabajolostrminosdelalicenciaGPL(LicenciaPblicaGeneral).
SivisitaselsiguienteenlacepodrsaccederalapginadedescargadeJasperReportsparatodaslasplataformas.
Encontrars una lista con todas las versiones disponibles, no es necesario identificarte para poder bajarte la que
desees.
ZonadedescargadeJasperReports
Ladescargayelcontenidodelodescargadolopodemosverenlasiguientepresentacin:

Debesconocer

DescargadeJasperReportseintegracinenNetBeans.

Resumentextualalternativo

En la presentacin que acabas de ver, al descomprimir el fichero de la descarga, has visto que en el mismo hay
variosdirectoriosocarpetas.Comentamosbrevementequcontienecadauna:
build:eslalibreraJasperReportssinempaquetar,contodaslasclasesqueincluye.
demo: podemos encontrar algunos ejemplos de utilizacin de la librera. Estos ejemplos estn preparados
para ser compilados con la herramienta "ant". Puedes inspeccionar el cdigo Java e intentar compilarlos y
ejecutarlos.
https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

28/38

12/12/2016

AD02_Contenidos

dist:esdondeseencuentrarealmentelalibreraempaquetadaenunficheroJAR(jasperreports3.7.4.jar)y
algunosficherosJARquenoutilizaremos.Tambinpodemosaccederaladocumentacintipojavadoc.
docs:eslareferenciarpidaenformatoXML.
lib:DiferenteslibrerasnecesariasporJasperReports,comoalgunasparaexportaradistintosformatos,para
incluirgrficos,etc.
src:Ficherosfuentedelalibrera.

Parasaberms

EnesteenlacetienesladocumentacinenlneadelaAPIdeJasperReports.
APIdeJasperReports

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

29/38

12/12/2016

AD02_Contenidos

6.2.Disearycompilarlaplantilla.
Las plantillas de los informes de JasperReports son sencillamente
ficheros XML con la extensin .jrxml. Podemos hacer que NetBeans
reconozca este tipo de ficheros como XML, para que cuando los
editemos en el editor se muestren los mismos cdigos de colores en las
etiquetasydemselementosdelasintaxisdeXML.
Enlaimagenseilustracmoconseguirlo:enNetBeanspinchamosenel
menTools,yahenOptions.AhseleccionamosMiscellaneous,luegola
pestaa Files. Entonces pulsamos en el botn New... para aadir la
nuevaextensin.
LospasosaseguirparatrabajarconJasperReportseran:
Paso 1: Disear la plantilla del informe: un fichero .jrxml. El documento de diseo est representado por un
archivoXMLquemantienelaestructuradeunarchivo
DTD(DocumentTypeDefinition)definidoporelmotorde
JasperReports.
LageneracindeundiseoimplicaeditarunarchivoXMLvalidadomediante:

<!DOCTYPEjasperReportPUBLIC"//JasperReports//DTDReportDesign//EN""http://jasperreports.sourcefo

Estos documentos XML cuentan con una estructura similar a la de cualquier documento de texto.
Fundamentalmentesesiguenestassecciones:
titleTtulodelinforme.
pageHeaderEncabezadodeldocumento.
columnHeaderEncabezadodelascolumnas.
detailDetalledeldocumento.Cuerpo
columnFooterPiedelacolumna.
pageFooterPiedeldocumento.
sumaryCierredeldocumento.

Paso 2: Compilacin: Una vez que se ha realizado el diseo, se compila antes de poder iniciar el proceso de
cargadedatos.Lacompilacinsellevaacaboatravsdelmtodo compileReport().
En este proceso, el diseo se transforma en un objeto serializable de tipo net.sf.jasperreports.engine
JasperReport,queluegoseguardaendisco.

Autoevaluacin

Escorrectalaafirmacinsiguiente?
LosdocumentosXMLqueseusaneneldiseodelosinformescuentanconunaseriedesecciones.
Verdadero.

Falso.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

30/38

12/12/2016

AD02_Contenidos

6.3.Rellenarelinformecondatos,exportarelinforme.
Paso3:Rellenarelinformecondatos:mediantelosmtodosfillReportXXX(),
se puede realizar la carga de datos del informe, pasndole como parmetros el
objetodediseo(obien,elarchivoquelorepresentaenformato
serializado)y
laconexinJDBCalabasededatosdesdedondeseobtendrlainformacinque
necesitemos.
Como resultado de este proceso, se obtiene un objeto que representa un
documento listo para ser impreso, un objeto serializable de tipo JasperPrint.
Este objeto puede guardarse en disco para su uso posterior, o bien puede ser
impreso,enviadoalapantallaotransformadoenPDF,XLS,CSV,etc.
Paso4:Visualizacin
Ahora podemos optar por mostrar un informe por pantalla, imprimirlo, o bien
obtenerloenalgntipoespecficodefichero,comoPDF,etc.
Paramostraruninformeporpantallaseutilizalaclase JasperViewer, la cual, a travs de su mtodo main(),
recibeelinformeamostrar.
Para imprimir el informe usaremos los mtodos printReport(),printPage() o printPages(), contenidos en la
clase JasperPrintManager.
ParaexportarlosdatosaunformatodearchivoespecficopodemosutilizarlosmtodosexportReportXXX().
Vamosaconstruirunejemplocomentadoenlasiguientepresentacin:
EjemploconJasperReports.

Resumentextualalternativo

Seguimos desarrollando el ejemplo. Ahora vamos a hacer que obtenga datos de una base de datos. En concreto,
delabasededatosderbyqueseincluyealinstalareljdk.
SeguimosconconJasperReports.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

31/38

12/12/2016

AD02_Contenidos

Resumentextualalternativo

Parasaberms

ElprincipalinconvenientequepuedesencontrartealtrabajarconJasperReportssinms,essindudael
diseo del informe. Por ello, para facilitar el diseo de los mismos, y hacerlos de manera visual y
cmoda se pueden usar otros productos como iReport, que es tambin una herramienta de software
libre.
HaymuchadocumentacinsobreiReportenlared,aquteadjuntamosdos:
TutorialiReport
CrearinformesconiReport

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

32/38

12/12/2016

AD02_Contenidos

AnexoI.Listarficherosdeunacarpeta,filtrando.
importjava.io.File;
importjava.io.FilenameFilter;
publicclassFiltrarimplementsFilenameFilter{
Stringextension;
//Constructor
Filtrar(Stringextension){
this.extension=extension;
}
publicbooleanaccept(Filedir,Stringname){
returnname.endsWith(extension);
}
publicstaticvoidmain(String[]args){
try{
//Obtendremosellistadodelosarchivosdeesedirectorio
Filefichero=newFile("c:\\datos\\.");
String[]listadeArchivos=fichero.list();
//Filtraremosporlosdeextension.txt
listadeArchivos=fichero.list(newFiltrar(".txt"));
//Comprobamoselnmerodearchivosenellistado
intnumarchivos=listadeArchivos.length;
//Sinohayningunoloavisamosporconsola
if(numarchivos<1)
System.out.println("Nohayarchivosquelistar");
//Ysihay,escribimossunombreporconsola.
else
{
for(intconta=0;conta<listadeArchivos.length;

conta++)

System.out.println(listadeArchivos[conta]);
}
}
catch(Exceptionex){
System.out.println("Erroralbuscarenlarutaindicada");
}
}
}

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

33/38

12/12/2016

AD02_Contenidos

AnexoII.Cdigodeseparadorderutas.
StringsubstFileSeparator(Stringruta){
Stringseparador="\\";
try{
//SiestamosenWindows
if(File.separator.equals(separador))
separador="/";
//Reemplazatodaslascadenasquecoincidenconlaexpresin
//regulardadaoldSepporlacadenaFile.separator
returnruta.replaceAll(separador,File.separator);
}catch(Exceptione){
//Porsiocurreunajava.util.regex.PatternSyntaxException
returnruta.replaceAll(separador+separador,File.separator);
}
}

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

34/38

12/12/2016

AD02_Contenidos

AnexoIII.Cdigodecrearunfichero.
try{

//Creamoselobjetoqueencapsulaelfichero

Filefichero=newFile("c:\\prufba\\miFichero.txt");

//ApartirdelobjetoFilecreamoselficherofsicamente

if(fichero.createNewFile())

else

System.out.println("Elficherosehacreadocorrectamente");
System.out.println("Nohapodidosercreadoelfichero");

}catch(Exceptionioe){

ioe.getMessage();

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

35/38

12/12/2016

AD02_Contenidos

AnexoIV.Cdigodecrearundirectorio.
try{
//Declaracindevariables
Stringdirectorio="C:\\prueba";
Stringvarios="carpeta1/carpeta2/carpeta3";
//Crearundirectorio
booleanexito=(newFile(directorio)).mkdir();
if(exito)

System.out.println("Directorio:"+directorio+"creado");

//Crearvariosdirectorios
exito=(newFile(varios)).mkdirs();
if(exito)
System.out.println("Directorios:"+varios+"creados");
}catch(Exceptione){
System.err.println("Error:"+e.getMessage());
}

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

36/38

12/12/2016

AD02_Contenidos

Anexo.Licenciasderecursos.

LicenciasderecursosutilizadosenlaUnidaddeTrabajo
Recurso(1)

Datosdelrecurso(1)

Recurso(2)

Autora:daddo83.
Licencia:CCbync.
Procedencia:
http://www.flickr.com/photos/daddo83/3406962115/

Autora:O'Reilly
Licencia:Copyrig
Procedencia:
http://aps2.elekt

Autora:Art3mis4.
Licencia:CCbyncsa.
Procedencia:
http://www.flickr.com/photos/art3mis4/4910243349/

Autora:JosJa
Licencia:Copyrig
Procedencia:Ca
deMicrosoft.

Autora:Kasaa.
Licencia:CCbync.
Procedencia:
http://www.flickr.com/photos/kasaa/2693784352/

Autora:PedroS
Licencia:CCby
Procedencia: htt

Autora:m.
Licencia:CCbync.
Procedencia:
http://www.flickr.com/photos/asmamirza/2599581983/

Autora:Conven
Licencia:CCby.
Procedencia:
http://www.flickr.

Autora:Ornellaswouldgo.
Licencia:CCby.
Procedencia:
http://www.flickr.com/photos/ornellas/4257487503/

Autora:Identity
Licencia:CCby
Procedencia:
is/71240905/

Autora:aldoaldoz.
Licencia:CCbyncsa.
Procedencia:
http://www.flickr.com/photos/aldoaldoz/3895614433/#/

Autora:Danard
Licencia:CCby.
Procedencia:
http://www.flickr.

Autora:Fartese.
Licencia:CCbysa.
Procedencia:
http://www.flickr.com/photos/fartese/4214174953/

Autora:RalphTQ
Licencia:CCby
Procedencia:htt

Autora:Roland.
Licencia:CCby.
Procedencia:
http://www.flickr.com/photos/roland/4358742850/

Autora:Freddy
Licencia:CCby.
Procedencia:
boy/3483094014

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

37/38

12/12/2016

AD02_Contenidos

Recurso(1)

Datosdelrecurso(1)
Autora:JosJavierBermdezHernndez.
Licencia:GNUGPLv2.
Procedencia: Montaje sobre Captura de pantalla del
programa NetBeans, propiedad Sun Microsystems,
bajolicenciaGNUGPLv2.

https://www.edu.xunta.es/fpadistancia/pluginfile.php/136675/mod_resource/content/1/AD02/AD02_Web/index.html

Recurso(2)

Autora:MikeBa
Licencia:CCby.
Procedencia:htt

38/38

Potrebbero piacerti anche