miércoles, junio 22, 2011

OCJP: Objetivo 3.2


OCJP: Objetivo 3.2 A partir de un escenario que involucre navegación por el sistema de archivos, lectura de archivos, o escritura en archivos, desarrollar la solución correcta usando las siguientes clases (algunas veces en combinación), del paquete java.io: BufferedReader, BufferedWriter, File, FileReader, PrintWriter y Console.

A continuación publico un ejemplo tonto y simple que trata de usar las clases mencionadas en el objetivo 3.2 del Oracle Certified Programmer for Java.

Descargar Deditor.java

import java.io.Console;

import java.io.File;

import java.io.FileReader;

import java.io.BufferedReader;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.FileWriter;

import java.io.BufferedWriter;



public class Deditor {

public Deditor(){

inicio();

}



public static void main(String[] args) throws Exception{

Console c = System.console();



if(c==null){

throw new Exception("No se pudo obtener consola.");

}



new Deditor();

}



private void inicio(){

int op = 1;



do{

op = getOpcionMenu("Salir","Abrir","Nuevo","Borrar","Listar");



switch(op){

case 1: break;

case 2: abrir(); break;

case 3: nuevo(); break;

case 4: borrar(); break;

case 5: listar(new File(".")); break;

}



} while(op!=1);



}



private void listar(File ruta){

File files[] = ruta.listFiles();



try {

for(File f:files){

System.console().printf("\t%s\n",f.getCanonicalPath());

}

} catch(IOException e){

e.printStackTrace();

}

}



private void abrir(){

try {



System.console().format("Archivo a abrir \n>");



String ruta = System.console().readLine();

File file = new File(ruta);



if(!file.exists()){

System.out.println("Error! el archivo no existe.");

return;

}



FileReader fr = new FileReader(file);

BufferedReader bfr = new BufferedReader(fr);



String linea ;



while((linea = bfr.readLine())!=null){

System.console().printf("%s",linea + '\n');

}



bfr.close();

} catch (FileNotFoundException e){

System.out.println("Archivo no encontrado");

} catch(IOException e){

System.out.println("Error IO");

}

}



private void nuevo(){

String nombreArchivo = null;



System.out.println("Esriba el nombre del archivo: ");

nombreArchivo = System.console().readLine();



if(nombreArchivo==null || nombreArchivo.length()<1){

System.console().printf("El nombre de archivo es invalido.");

return;

}



File file = new File(nombreArchivo);

if(file.exists()){

System.console().printf("Error el archivo ya existe!");

return;

}



System.out.println("Escriba el contenido del archivo\n(finaliza con .)\n\n\n");



StringBuilder contenido = new StringBuilder();



String l = null;

do{

l = System.console().readLine();

contenido.append(l);

contenido.append('\n');

} while (l!=null && !l.equals("."));



try {

FileWriter fw = new FileWriter(file);

BufferedWriter bw = new BufferedWriter(fw);



bw.write(contenido.toString());



bw.flush();

bw.close();

} catch(IOException e){

e.printStackTrace();

}

}



private void borrar(){

System.out.println("Escriba el nombre del archivo a borrar> ");



String nombreArchivo = System.console().readLine();



if(nombreArchivo==null || nombreArchivo.length()<1){

System.out.println("Archivo invalido");

return;

}



File file = new File(nombreArchivo);

if(!file.exists() || file.isDirectory()){

System.out.println("El archivo no es valido");

return;

}



boolean isOk = file.delete();



if(isOk){

System.out.println("Archivo borrado");

} else {

System.console().printf("Problemas borrando archivo.");

}

}



private int getOpcionMenu(String... opciones){

int i = 1;



System.out.println("Seleccione una opcion:");

for(String o:opciones){

System.out.println("\t" + i + " - " + o);

i++;

}



System.out.print("> ");



return readInt();

}



private int readInt(){

int retorno = 0;

String r = "";

boolean esNumerico = false;



while(r==null || r.length()<1 || !esNumerico){

r = System.console().readLine();

try {

retorno = Integer.parseInt(r);

esNumerico = true;

} catch(NumberFormatException e){

// no es error

}

}



return retorno;

}

}

0 comentarios:

Publicar un comentario