0% encontró este documento útil (0 votos)
24 vistas7 páginas

Ejercicios de Ficheros y Excepciones

Este documento presenta varios ejemplos de código para manipular ficheros en Java, incluyendo abrir, leer, escribir y cerrar ficheros, así como el uso de streams aleatorios y de entrada/salida de datos.

Cargado por

Oscar Caicedo
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
24 vistas7 páginas

Ejercicios de Ficheros y Excepciones

Este documento presenta varios ejemplos de código para manipular ficheros en Java, incluyendo abrir, leer, escribir y cerrar ficheros, así como el uso de streams aleatorios y de entrada/salida de datos.

Cargado por

Oscar Caicedo
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 7

Ejercicios de Ficheros y Excepciones:

1. Abrir un Fichero. 2. Leer un fichero y visualizarlo por pantalla. 3. rear un fichero. !. Abrir un fichero y "ostrar sus propiedades. #. Leer un fichero y crear otro previa aplicaci$n de un filtrado. %. Leer dos ficheros y obtener otro co"o concatenaci$n de ellos. &. 'rueba el si(uiente eje"plo:
import java.io.*; public class Copy { public static void main(String[] args) throws !"#c$ption { %il$ input%il$ & n$w %il$('(arrago.t#t'); %il$ output%il$ & n$w %il$('outagain.t#t'); %il$)$ad$r in & n$w %il$)$ad$r(input%il$); %il$*rit$r out & n$w %il$*rit$r(output%il$); int c; whil$ ((c & in.r$ad()) +& ,-) out.writ$(c); in.clos$(); out.clos$();

. .

). 'rueba el si(uiente eje"plo:


import java.io.*; class n(o%ich$ro {

public static void main( String args[] ) throws !"#c$ption { i(( args.l$ngth / 0 ) { (or( int i&0; i 1 args.l$ngth; i22 ) { %il$ ( & n$w %il$( args[i] ); Syst$m.out.println( '3ombr$4 '2(.g$t3am$() ); Syst$m.out.println( 'Camino4 '2(.g$t5ath() ); i(( (.$#ists() ) { Syst$m.out.print( '%ich$ro $#ist$nt$ ' ); Syst$m.out.print( ((.can)$ad() 6 ' y s$ pu$d$ 7$$r' 4 '' ) ); Syst$m.out.print( ((.can*rit$() 6 ' y s$ pu$s$ "scribir' 4 '' ) ); Syst$m.out.println( '.' ); Syst$m.out.println( '7a longitud d$l (ich$ro son '2 (.l$ngth()2' byt$s' ); . $ls$ Syst$m.out.println( '"l (ich$ro no $#ist$.' ); . . $ls$ Syst$m.out.println( '8$b$ indicar un (ich$ro.' ); . .

*. 'rueba el si(uiente eje"plo:


Este pro(ra"a+ pre(unta al usuario una lista de no"bres y n,"eros de tel-fono. ada no"bre y n,"ero se a.ade a un fichero situado en una localizaci$n fija. 'ara indicar /ue se ha introducido toda la lista+ el usuario especifica 0Fin0 ante la solicitud de entrada del no"bre. 1na vez /ue el usuario ha ter"inado de teclear la lista+ el pro(ra"a crear2 un fichero de salida /ue se "ostrar2 en pantalla o se i"pri"ir2. 'or eje"plo:
9:,;<:-=>=?@uanito :A;B<B?7uisa -=>;:A?5$p$ >;<A9B?Cntonio 9-,>:;<A=-?Daria

El c$di(o fuente del pro(ra"a es el si(uiente:


import java.io.*; class E$l$(onos { static %il$!utputStr$am (os; public static (inal int long7in$a & B-; public static void main( String args[] ) throws byt$ t(no[] & n$w byt$[long7in$a]; byt$ nombr$[] & n$w byt$[long7in$a]; !"#c$ption {

(os & n$w %il$!utputStr$am( 't$l$(ono.dat' ); whil$( tru$ ) { Syst$m.$rr.println( 'E$cl$$ un nombr$ (F%inF t$rmina)' ); ) ) l$$7in$a( nombr$ ); i(( '(in'.$Guals gnor$Cas$( n$w String( nombr$?0?0?> ) br$aH; Syst$m.$rr.println( 'E$cl$$ $l num$ro d$ t$l$(ono' ); l$$7in$a( t(no ); (or( int i&0; t(no[i] +& 0; i22 ) (os.writ$( t(no[i] ); (os.writ$( F?F ); (or( int i&0; nombr$[i] +& 0; i22 ) (os.writ$( nombr$[i] ); (os.writ$( FInF ); . (os.clos$(); . privat$ !"#c$ption int int static void l$$7in$a( byt$ lin$a[] ) throws { b & 0; i & 0;

whil$( (i 1 ( long7in$a,-) ) JJ

( ( b & Syst$m.in.r$ad() ) +& FInF ) ) lin$a[i22] & (byt$)b; lin$a[i] & (byt$)0; .

13. F4 5E678 9E A

E87 ALEA:7647

A "enudo+ no se desea leer un fichero de principio a fin; sino acceder al fichero co"o una base de datos+ donde se salta de un re(istro a otro; cada uno en diferentes partes del fichero. <ava proporciona una clase RandomAccessFile para este tipo de entrada=salida.

Creacin de un Fichero de Acceso Aleatorio


5ay dos posibilidades para abrir un fichero de acceso aleatorio: on el no"bre del fichero:
mi)C%il$ & n$w )andomCcc$ss%il$( String nombr$?String modo );

on un objeto File:
mi)C%il$ & n$w )andomCcc$ss%il$( %il$ (ich$ro?String modo );

El ar(u"ento "odo deter"ina si se tiene acceso de s$lo lectura >r? o de lectura=escritura >rKw?. 'or eje"plo+ se puede abrir un fichero de una base de datos para actualizaci$n:
)andomCcc$ss%il$ mi)C%il$; mi)C%il$ & n$w )andomCcc$ss%il$( 'KtmpKHH.db('?'rw' );

Acceso a la Informacin
Los objetos 6ando"AccessFile esperan infor"aci$n de lectura=escritura de la "is"a "anera /ue los objetos 9ata4nput=9ata7utput. 8e tiene acceso a todas las operaciones read() y write() de las clases DataInputStream y DataOutputStream.

void void void void void void void void void

writ$Lool$an( bool$an b ); writ$Lyt$( int i ); writ$Short( int i ); writ$Char( int i ); writ$ nt( int i ); writ$%loat( (loat ( ); writ$8oubl$( doubl$ d ); writ$Lyt$s( String s ); writ$Chars( string s );

byt$ r$adLyt$() int r$adMnsign$dLyt$() short r$adShort() int r$adMnsign$dShort() char r$adChar() int r$ad nt() long r$ad7ong() (loat r$ad%loat() doubl$ r$ad8oubl$() String r$ad7in$()

:a"bi-n se tienen "uchos "-todos para "overse dentro de un fichero:


long g$t%il$5oint$r();

9evuelve la posici$n actual del puntero del fichero


void s$$H( long pos );

oloca el puntero del fichero en una posici$n deter"inada. La posici$n se da co"o un desplaza"iento en bytes desde el co"ienzo del fichero. La posici$n 3 "arca el co"ienzo de ese fichero.
long l$ngth();

9evuelve la lon(itud del fichero. La posici$n length() "arca el final de ese fichero.

Actualizacin de Informacin
8e pueden utilizar ficheros de acceso aleatorio para a.adir infor"aci$n a ficheros existentes:
mi)C%il$ & n$w )andomCcc$ss%il$( 'KtmpKHH.log'?'rw' ); mi)C%il$.s$$H( mi)C%il$.l$ngth() ); KK CualGui$r writ$() Gu$ hagamos a partir d$ $st$ punto d$l cNdigo KK aOadirP in(ormaciNn al (ich$ro

Qamos a v$r un p$Gu$Oo $j$mplo? Gu$ aOad$ una cad$na a un (ich$ro $#ist$nt$4

import java.io.*; KK Cada v$R Gu$ $j$cut$mos $st$ programita? s$ incorporara una nu$va KK lin$a al (ich$ro d$ log Gu$ s$ cr$a la prim$ra v$R Gu$ s$ $j$cuta

KK class 7og { public static void main( String args[] ) throws !"#c$ption { )andomCcc$ss%il$ mi)C%il$; String s & ' n(ormacion a incorporarInEutorial d$ @avaIn'; KK Cbrimos $l (ich$ro d$ acc$so al$atorio mi)C%il$ & n$w )andomCcc$ss%il$( 'KtmpKjava.log'?'rw' ); KK 3os vamos al (inal d$l (ich$ro mi)C%il$.s$$H( mi)C%il$.l$ngth() ); KK ncorporamos la cad$na al (ich$ro mi)C%il$.writ$Lyt$s( s ); KK C$rramos $l (ich$ro mi)C%il$.clos$(); . .

11. Apertura y cierre de 9ata4nput8trea"


'ara abrir y cerrar un objeto 9ata4nput8trea"+ se utilizan los "is"os "-todos /ue para File4nput8trea":
8ata nputStr$am mi8Str$am; %il$ nputStr$am mi%Str$am; KK !bti$n$ un controlador d$ (ich$ro mi%Str$am & n$w %il$ nputStr$am 'K$tcK$j$mplo.db(' ); KK"ncad$na un (ich$ro d$ $ntrada d$ datos mi8Str$am & n$w 8ata nputStr$am( mi%Str$am ); KK Chora s$ pu$d$n utiliRar los dos str$ams d$ $ntrada para KK acc$d$r al (ich$ro (si s$ Gui$r$...) mi%Str$am.r$ad( b ); i & mi8Str$am.r$ad nt(); KK Ci$rra $l (ich$ro d$ datos $#plScitam$nt$ KKSi$mpr$ s$ ci$rra prim$ro $l (ich$ro str$am d$ mayor niv$l mi8Str$am.clos$(); mi%Str$am.clos$();

12. 8trea"s 9ata7utput


<ava ta"bi-n i"ple"enta una clase de salida co"ple"entaria a la clase DataInputStream. on la clase 9ata7utput8trea"+ se pueden escribir datos binarios en un fichero.

Apertura y cierre de objetos DataOutputStream


'ara abrir y cerrar objetos 9ata7utput8trea"+ se utilizan los "is"os "-todos /ue para los objetos File7utput8trea":
8ata!utputStr$am mi8ataStr$am; %il$!utputStr$am mi%il$Str$am; Lu(($r$d!utputStr$am miLu(($rStr$am; KK !bti$n$ un controlador d$ (ich$ro mi%il$Str$am & n$w %il$!utputStr$am( 'KtmpKHH' ); KK "ncad$na un str$am d$ salida con bu(($r (por $(ici$ncia) miLu(($rStr$am & n$w Lu(($r$d!utputStr$am( mi%il$Str$am ); KK "ncad$na un (ich$ro d$ salida d$ datos mi8ataStr$am & n$w 8ata!utputStr$am( miLu(($rStr$am ); KK Chora s$ pu$d$n utiliRar los dos str$ams d$ $ntrada para KK acc$d$r al (ich$ro (si s$ Gui$r$) miLu(($rStr$am.writ$( b ); mi8ataStr$am.writ$ nt( i ); KK Ci$rra $l (ich$ro d$ datos $#plScitam$nt$. Si$mpr$ s$ ci$rra KK prim$ro $l (ich$ro str$am d$ mayor niv$l mi8ataStr$am.clos$(); miLu(($rStr$am.clos$(); mi%il$Str$am.clos$();

También podría gustarte