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 br=""> 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 br=""> 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 br="" esnumerico=""> r = System.console().readLine(); try { retorno = Integer.parseInt(r); esNumerico = true; } catch(NumberFormatException e){ // no es error } } return retorno; } }1>1>1>