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>
 
No hay comentarios:
Publicar un comentario