Ejercicios de Ficheros y Excepciones
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$();
. .
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.' ); . .
(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.
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.
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$()
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$(); . .