Ejemplo de Archivos en Java

June 12th, 2009 por danielmd Comentar »

Hoy le he ayudado a un amigo con su proyecto de Archivos en Java donde tenia que hacer un programa para el registro de películas, clientes y todo lo que se necesita para ir a rentar una película, saber que películas hay y quienes la rentaron.

Me paso lo que tenia hecho y la neta no le entendí mucho que digamos, para empezar tenia el registro de DVDS, Blu-Rays y Clientes en la misma pantalla lo que hacia que tuviera como 50 botones en una sola pantalla, no manches le dije, aparte tenia un Altas,bajas y listar para los 3 cuando podía juntar las dos primeras en uno solo. En fin, le dije que mejor le hacia la parte del registro de películas y dvds y ya que el validara e hiciera todo lo demás.
Y bueno, por si alguien esta aprendiendo a programar les dejo el código fuente de lo que hice al  final.

Este programa contiene lo siguiente:

  • Altas de Archivos(crear)
  • Bajas de Archivos
  • Leer Archivos
  • Listar Archivos
  • Renombrar Archivos
  • Borrar Archivos.

Y así se ve la pantalla de las altas de películas en DVD o Blu-ray.
archivos

Bien, como lo prometido es deuda, después de instalar el plugin Wp-Syntax a mi blog, ahora si puedo poner código y que se vea bien chukis con colores y toda la onda ^^.

Empezamos, quiero suponer que si están viendo archivos es porque seguramente ya aprendieron a usar métodos y métodos con parámetros etc..¿No?. Bueno, por si no saben o nunca los han usado les explicare una parte con la que se toparan en cada evento de los botones.

En esta parte lo que hago es obtener el tipo que se selecciono del combo box para saber que se va dar de alta DVD(0) y Bluray(1). Los valores que recibo son posiciones del los datos del combo box, como cuando usamos vectores ya saben, empezando desde el 0.

switch(tipo.getSelectedIndex())
{
    case 0:altas(ruta="c:/archivoDVD.txt" ,presentacion="DVD");
          break;
    case 1: altas(ruta="c:/archivoBlueray.txt" ,presentacion="Blueray");
           break;
    default: JOptionPane.showMessageDialog(null,"No selecciono ninguna opción");
    break;
}

Una ves que se selecciona el tipo de formato de la película entra al case y mando llamar al método altas donde le envió la ruta del archivo que va crear y el formato o presentación de la película. Si se dan cuenta a como esta el programa nunca entraran al case default, pero esta así porque falta la presentación VHS y no se que otra mas se necesitaba, de todas formas se harían prácticamente igual.

Ahora vemos el método altas donde recibimos 2 parámetros, la ruta donde se creara el archivo dependiendo del tipo de presentación de la película y el de presentación es solo para mostrar en un mensajito que se dio de alta un blu-ray o un DVD que igual se necesita.

    public void altas(String ruta , String presentacion){
    try{
      PrintWriter datos = new PrintWriter(new FileWriter(ruta, true));
      //escritura archivo
      String mensaje= codigo.getText() + "_" +
                      titulo.getText() +"_"+
                      director.getText() +"_"+
                      actor1.getText() +"_"+
                      actor2.getText() +"_"+
                      lenguaje.getText() + "_"+
                      subtitulos.getSelectedIndex()+"\n";
      JOptionPane.showMessageDialog(null,"Se dio de alta el "+presentacion+" con el código: "+codigo.getText()+"\n y el titulo: "+titulo.getText());
      datos.write(mensaje);
      datos.close();
	} catch(NumberFormatException nfe){
    } catch(IOException ioe){ }
  /*ALTASsssssssss*/
    }

Lo siguiente es crear un archivo con PrintWriter en la ruta que le enviamos, después creamos una variable String llamada mensaje donde se guardaran todos los datos de la pelicula mediante un getText() a cada Textfield con información de la película y los voy separando con un guion bajo (_) para saber que es un campo distinto y al final una diagonal \n para separar 1 película de otra.
Una ves que se obtengan todos los registros y este llena la variable mensaje con todos los datos, procedemos a escribir en el archivo datos, para esto usamos write y le enviamos por parámetro la variable mensaje que contiene el registro de la película que estamos dando de alta así:

90210_nombre_director_actor1_actor2_lenguaje_subtitulos\n

Y los guardamos con
datos.write(mensaje);
Y cerramos el archivo datos con un close una ves que dejemos de dar de alta datos.close();

Ahora, los siguientes 2 métodos los explicare antes del método bajas de registros porque se necesitaran dentro de el.
El primero se llama borrar_archivo y recibe como parámetro la ruta del archivo que se va borrar, creamos una variable del tipo File para indicarle que se trata de un archivo y este recibirá la ruta que obtenemos como parámetro, si lo encuentra se borra el archivo con delete() y si no, pues no :P y muestra un mensaje.

   public void borrar_archivo(String ruta){
      File arc = new File(ruta);
      if (arc.delete())
      System.out.println("Archivo Borrado");
      else
      System.out.println("No se pudo borrar");
   }

El siguiente método lo hice porque a la hora de utilizar el método bajas creo un archivo temporal en donde mando todos los datos del archivo y luego lo renombro para eliminar el tempo.txt y se quede con el nombre original con los datos correctos.

   public void renombrar_archivo(String ruta){
      File nuevonombre = new File(ruta);
      File viejonombre = new File("c:/tempo.txt");
      if (viejonombre.renameTo(nuevonombre)){
      System.out.println("No se pudo renombrar");
      }

Método baja, este método al igual que todos recibe como parámetro la ruta del archivo con el que vamos a trabajar, lo siguiente es crear una variable para saber cual es el registro que se va eliminar por su numero de código.
Para esto abrimos el archivo en modo lectura y leemos linea por linea mientras que las lineas no estén vacías, como el primer campo de nuestros registros es el codigo de la pelicula, creamos un StringTokenizer y le decimos que cuando se encuentre un guion bajo corte porque lo que sigue despues de ese guion es otro campo que no nos interesa, así que solo tomara la primera parte porque como les dije arriba, a la hora de guardar todos nuestros registros están así.
90210_nombre_director_actor1_actor2_lenguaje_subtitulos\n
Lo siguiente es comparar el codigo con el que vamos a eliminar con equals, que se usa para comparar si son iguales o no,si es igual mandamos un mensaje diciendo que se elimino el registro, pero si no son iguales guardamos toda la linea en un archivo temporal.

    public void baja(String ruta){
          String eliminar = JOptionPane.showInputDialog("Introduce el código de la película que deseas eliminar");
       try {
				BufferedReader mensaje = new BufferedReader(new FileReader(ruta));
				String linea = mensaje.readLine();
				while(linea != null)
                {
					StringTokenizer token = new StringTokenizer(linea,"_");
					String codigo = token.nextToken();
                    if(codigo.equals(eliminar)){
                    JOptionPane.showMessageDialog(null,"Se elimino el código: "+codigo);
                     }
                    else
                    {
                    String lineatempo=linea+"\n";
                    PrintWriter mensajeTemp = new PrintWriter(new FileWriter("c:/tempo.txt", true));
                    mensajeTemp.write(lineatempo);
                    mensajeTemp.close();
                    }
					linea = mensaje.readLine();
				}
                mensaje.close();
 
       borrar_archivo(ruta);
       renombrar_archivo(ruta);
 
		} catch(NumberFormatException nfe){
		}catch(IOException ioe){
		}
    }

Ya que guardamos todos los registros en el archivo temporal borramos el archivo original, por ejemplo: c:/archivoDVD.txt llamando al método borrar archivo. Y como los datos que nos importan los guardamos en el archivo temporal sin guardar el que eliminamos, lo renombramos con el método renombrar_archivo y le ponemos c:/archivoDVD.txt.

Y bueno, falta el método listar pero ese se los dejo de tarea xD, de todas formas viene dentro del código fuente que les dejare aquí abajo.

Descargar Código fuente y Archivo ejecutable en JAR para que vean como funciona ^^

Tal ves esta no fue la mejor forma de explicar el código que resulto en un post muy largo, así que cualquier duda en los comentarios.

Ojo!, le faltan muchísimas validaciones para que funcione 100%, pero esas les tocan a ustedes, el programa solo hace lo que tiene que hacer.


Notas relacionadas

Si te gusto esta entrada suscribete al blog vía RSS o puedes recibir las actualizaciones directamente en tu correo electrónico

48 comentarios

cambiar gravatar y obtener una imagen propia
  1. gairokux says:

    como dato curioso es blu-ray no blue ray le cambiaron el nombre por problemas de derechos de autor en algunos paises.

    pd:esperare el codigo presionando F5

  2. danielmd says:

    La verdad no sabía :P, gracias!.

    Jaja eso quiere decir que tal ves ahorita estés por aquí :O

    • AlejoNait says:

      Hola…
      te queria pedir una favor. lo que pasa es que ,me dejaron un trabajo similar al que realisaste, que por cierto, esta muy bueno, queria saber si podia ayudarme con el mio.. dandome una guia, ademas, dime como le hiciste para sacar el ejecutable de tu programa, pues no sabia que se podia hacer, porfavor ayudame.. te lo agradesco mucho. ;)

      • danielmd says:

        Hola, casi no uso el msn, si quieres puedes mostrarme de lo que trata tu proyecto y te puedo explicar que es lo que necesitas y te paso algunos temas para que te guies.

        El ejecutable se puede sacar de varias formas, pero en este caso yo lo hice con Netbeans 6.5, Hay un boto que dice algo así como clean and build , tiene como un botón de Play como si lo estuvieras corriendo. Despues de eso se crea un archivo .jar en la carpeta de tu proyecto, debe estar en una carpeta llamada “dist”

  3. Matias says:

    tengo una duda..capaz q vos me podrias ayudar!
    como hago para chequear si dos archivos son iguales en java??
    gracias

    saludos

  4. danielmd says:

    @Matias:Uff pues las formas que se me ocurren seria que abrieras los dos archivos y fueras comparando linea por linea utilizando StringTokenizer utilizando un if que cuando encuentre una linea distinta te vote del ciclo y mandes decir que los archivos no son iguales.

    Otra seria que abrieras los archivos los pases a bytes y compares como si fueran cadenas
    if(archivo1.compareTo(archivo2)==0){
    //son iguales
    }

    Aqui te dejo un ejemplo de como pasar un archivo a bytes
    http://code.google.com/p/festival-de-postres/source/browse/trunk/Festival%20de%20postres%20UN%20-%20Servicios/src/org/festivaldepostresun/servicios/FileToByte.java?r=70

  5. Matias says:

    me podrias ayudar con el codigo para abrir los dos archivos y fuera comparando linea por linea utilizando StringTokenizer utilizando un if que cuando encuentre una linea distinta te vote del ciclo y mandes decir que los archivos no son iguales.

    lo intento hacer pero no funciona…seria muy importante si me ayudaras..te agradesco

  6. danielmd says:

    utiliza algo parecido al método baja () que hice, solo que no darás de baja, lo que puedes hacer es abrir los dos archivos como se muestra en ese método y luego alfo así
    boolean bandera=false;
    while(linea != null && bandera=false)
    {
    StringTokenizer token = new StringTokenizer(linea,”_”);
    String codigo = token.nextToken();
    StringTokenizer token = new StringTokenizer(linea,”_”);
    String codigo2 = token.nextToken();
    if(!codigo.equals(codigo2)){
    bandera=true;
    }
    }

    No es la mejor opción pero es la mas rápida y fácil de explicar, pero OJO, este método puede tardar mucho si lo usas con archivos muy pesados.

    Y si puedes pon tu código para verlo.

  7. danielmd says:

    haha me equivoke, espero que entiendas la idea, debes abrir los dos archivos y leerlos, el while queda igual asi como lo puse.

  8. Matias says:

    bueno q te parece este metodo …creo q anda muy bien

    public static boolean igualArchivo(FileReader archivo1, FileReader archivo2) {
    try {
    BufferedReader br1 = new BufferedReader(archivo1);
    BufferedReader br2 = new BufferedReader(archivo2);

    String linea1 = null;
    String linea2 = null;

    while ((linea1 = br1.readLine()) != null) {
    linea2 = br2.readLine();
    if (!linea1.equals(linea2)) {
    return false;
    }
    }
    linea2 = br2.readLine();
    if (linea2 != null) {
    return false;
    }

    return true;
    } catch (IOException e) {
    e.printStackTrace();
    }
    return false;
    }

  9. danielmd says:

    Funciona?

    while ((linea1 = br1.readLine()) != null) {
    linea2 = br2.readLine();
    if (linea1.equals(linea2))
    return true; // Son iguales
    else
    {return false; break; //Son diferentes y te saca.

    }

  10. jimmy says:

    hola soy nuevo en esto de la programacion y mi primer proyecto es hacer un menu que me pida ingresar un contacto y en el guardar clave_nombre_telefono_direccion y correo ya tengo el menu y creo que ya tengo la otra parte donde me pide que escriba los datos pero lo hice en dos partes y no se como unirlas y ps esa es mi pregunta como puedo hacerlo ,,,, gracias ,,,
    }/*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */

    package arreglo;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;

    /**
    *
    * @author usuario
    */
    public class Main {

    /**
    * @param args the command line arguments
    */
    public static void main(String[] args)throws IOException{
    InputStreamReader isr = new InputStreamReader(System.in);
    BufferedReader leerBR = new BufferedReader(isr);
    int x = 1;
    String[] arreglo = new String[5];
    int contador = 0;

    do{
    System.out.println(“————MENU—————“);
    System.out.println(“1. AGREGAR CONTACTO”);
    System.out.println(“2. BUSCAR CONTACTO”);
    System.out.println(“3. SALIR”);
    System.out.println(“——————————–“);
    int opcion = Integer.parseInt(leerBR.readLine());

    switch(opcion){
    case 1: System.out.println(“INGRESA LOS DATOS A GUARDAR”);
    arreglo[contador] = leerBR.readLine();
    contador++;
    break;
    case 2: System.out.println(“NUMERO DEL 0 AL 5 PARA DESPLEGAR CONTACTO”);
    int indice = Integer.parseInt(leerBR.readLine());
    System.out.println(“El nombre es: ” + arreglo[indice]);
    break;
    case 3: x = 2;
    break;
    }
    }while(x==1);
    }
    }

    run:
    ————MENU—————
    1. AGREGAR CONTACTO
    2. BUSCAR CONTACTO
    3. SALIR
    ——————————–

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.StringTokenizer;

    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */

    /**
    *
    * @author usuario
    */
    public class Token {

    /**
    * @param args the command line arguments
    */
    public static void main(String[] args) throws IOException{
    InputStreamReader isr = new InputStreamReader(System.in);
    BufferedReader leerBR = new BufferedReader(isr);

    System.out.println(“Escribe LOS DATOS separado con guion bajo de acuerdo a lo siguiente CLAVE # DEL 0 AL 4, NOMBRE, DIRECCION, TELEFONO Y CORREO “);
    String texto = leerBR.readLine();

    StringTokenizer token = new StringTokenizer(texto, “_”);

    System.out.println(“LOS DATOS SON: ” + token.countTokens());
    while(token.hasMoreTokens()){
    System.out.println(“clave: ” + token.nextToken());
    System.out.println(“nombre: ” + token.nextToken());
    System.out.println(“direccion: ” + token.nextToken());
    System.out.println(“telefono: ” + token.nextToken());
    System.out.println(“correo: ” + token.nextToken());
    }

    }
    }

    run:
    Escribe LOS DATOS separado con guion bajo de acuerdo a lo siguiente CLAVE # DEL 0 AL 4, NOMBRE, DIRECCION, TELEFONO Y CORREO

  11. danielmd says:

    Tienes que crear un main donde llames a las otras clases que creaste para que no los tengas repetidos, asi nomas creas obejetos de esa clase y mandas llamar sus metodos.

    Mira, hice el main y en el main mande llamar tu primer programa creando un objeto de la clase capturar donde mande llamar al metodo capturardatos.
    Fijate en esto —–>capturar opcion1= new capturar();
    y en esto —> opcion1.capturardatos();
    Con eso llamo a tu primer programa, te recuerdo que son dos archivos y si quieres meter el otro programa tendrás un tercero

    menu.java
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.lang.*;
    public class menu {

    public static void main(String[] args)throws IOException{
    int n=0;
    InputStreamReader isr = new InputStreamReader(System.in);
    BufferedReader leerBR = new BufferedReader(isr);
    capturar opcion1= new capturar();

    do{
    System.out.println(“< <<<<<<<<< M E N U >>>>>>>>>” +
    “\n1.Altas” +
    “\n2.Consulta” +
    “\n3.Salir” +
    “\n Elige una opcion”);
    n = Integer.parseInt(leerBR.readLine());
    switch(n)
    {
    case 1: System.out.println(“Opcion 1″);
    opcion1.capturardatos();
    break;
    case 2: System.out.println(“Opcion 2″);
    break;
    case 3: System.out.println(“Adios!”);
    break;
    default: System.out.println(“Esta opcion no existe”);
    }
    }while(n!=3);

    }

    }

    capturar.java
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    public class capturar {

    public void capturardatos()throws IOException{
    InputStreamReader isr = new InputStreamReader(System.in);
    BufferedReader leerBR = new BufferedReader(isr);
    int x = 0;
    String[] arreglo = new String[5];
    int contador = 0;

    do{
    System.out.println(“————MENU—————”);
    System.out.println(“1. AGREGAR CONTACTO”);
    System.out.println(“2. BUSCAR CONTACTO”);
    System.out.println(“3. SALIR”);
    System.out.println(“——————————–”);
    int opcion = Integer.parseInt(leerBR.readLine());

    switch(opcion){
    case 1: System.out.println(“INGRESA LOS DATOS A GUARDAR”);
    arreglo[contador] = leerBR.readLine();
    contador++;
    break;
    case 2: System.out.println(“NUMERO DEL 0 AL 5 PARA DESPLEGAR CONTACTO”);
    int indice = Integer.parseInt(leerBR.readLine());
    System.out.println(“El nombre es: ” + arreglo[indice]);
    break;
    case 3: x = 2;
    break;
    default: System.out.print(“Esta opcion no existe”);
    }
    }while(x!=3);

    }

    }

    Sale!, espero te sea útil.

  12. rata says:

    hola…como puedes modificar un dato ingresado?

    y otra cosa..si kieres rescatar por ejemplo el nombre del director de una pelicula ..como se hace?
    saludos

  13. danielmd says:

    Puedes hacer una busqueda como esta en las bajas de este programa y cuando encuentre el dato que quieras modificar haz que te devuelva la posición donde se encuentran los datos.

    Por ejemplo : Película Arma mortal esta en el renglón 3, ahora para modificar le cambias el nombre y reemplazas el contenido del renglón 3 por lo nuevo.

    Otra forma seria eliminar el renglón que quieras modificar con el método baja y lo vuelves a dar de alta en el archivo, pero en la misma opcion de modificar, no se si se entienda.

    Con respecto a lo ultimo, abres el archivo en modo lectura y con un SET muestras los datos

    director.setText();

    Get es para guardar y Set para mostrar lo guardado.

  14. kurtjavier says:

    Esta muy bueno el tema men te felicito, ya le hecho un ojo al codigo q hiciste porque justamente horita estoy aprendiendo a trabajar con archivos, debi aprenderlo hace un año pero no me lo enseñaron y ahora lo necesito…..cualquier duda preparate porque te preguntare jeje. gracias por el tema

  15. eduardo says:

    Ola, oigan alguien ya hizo el metodo de listar? creo q no entiendo muy bien

  16. glenda says:

    Mmmm… vi el codigo y todo, pero arr no entiendo tmpoco eso del listado… como lo implementas… :S

    • danielmd says:

      Hola Glenda, que parte no entiendes?
      El programa lee linea por linea, y en cada linea se encuentran todos los datos separados por un TOKEN, este toquen esta definido por un guion bajo, es decir, cuando el programa encuentre un guion bajo, sera lo que indique que se trata de otro dato.
      Con token.nextToken(); va avanzando de uno a al siguiente dato y los va guardando en una variable, es como cuando utilizas vectores y vas recorriendo una posición.

      • glenda says:

        mmm, ok creo k mas k menos ya le entendi jeje, pero… o sea xk dices k ese d linea no esta pero si esta en tu programa?
        es k bueno ya lo corri segun yo, aparece bn, pero no da bajas… oh no se… k estoy haciendo mal :(?

        public void altas(String ruta , String presentacion){
        try{
        PrintWriter datos = new PrintWriter(new FileWriter(ruta, true));
        //escritura archivo
        String mensaje= codigo.getText() + “_” +
        titulo.getText() +”_”+
        director.getText() +”_”+
        actor1.getText() +”_”+
        actor2.getText() +”_”+
        lenguaje.getText() + “_”+
        subtitulos.getSelectedIndex()+”\n”;
        JOptionPane.showMessageDialog(null,”Se dio de alta el “+presentacion+” con el codigo: “+codigo.getText()+”\n y el titulo: “+titulo.getText());
        datos.write(mensaje);
        datos.close();
        } catch(NumberFormatException nfe){
        } catch(IOException ioe){ }
        /*ALTASsssssssss*/
        }

        bueno jeje espero no molestarte :s

        • glenda says:

          MMMmm, no espera, creo k ya vi ejeje, mi archivo no estaba en la ruta k se marcaba, ahora…

          creo k ya, aunk, el listado… no se actualiza vdd? como puedo hacer para actualizarlo?
          es k necesito borrarlo para k salgan los datos cierto?
          bueno jeje d nvo gracias :)!

          • danielmd says:

            Pues imprimes el listado una ves que se borren los datos con un setText en el área de impresión o mandas llamar nuevamente el método de impresión como yo le hice.

        • danielmd says:

          Cual linea glenda?
          Recuerda que en las bajas debe tener la misma ruta del archivo C:/datos.txt, algo así.
          Lo que hace el programa, como yo lo hice, es buscar el código que se quiere eliminar, luego envía todos los datos a un archivo temporal, sin contar el que se elimina, por ultimo se vuelven a pasar todos los datos al archivo original y se elimina el temporal.

  17. alex says:

    como le hago para hacer esto mismo pero sin graficos, o si no como puedo guardar o escribir varios datos en un archivo como nombre titulo actor etc en el caso de una pelicula

    • danielmd says:

      Hola alex, si quieres hacerlo sin gráficos supongo que lo estarás haciendo desde consola, entonces solo cambia los campos input y cámbialos por

      Captura = new BufferedReader(new InputStreamReader(System.in));
      Imprimir =Captura.readLine(); System.out.println(Imprimir);

      • Osuna says:

        Hola.

        Sin muchos rodeos: no entendi como hacerlo no gráfico.

        • danielmd says:

          Hola Osuna, lo único que es diferente es la forma en que se capturan y guardan los datos, los métodos son los mismos.

          Te recomiendo que leas este ejercicio, con el vas a aprender a capturar desde consola con InputStreamBuffer e imprimir datos con System.out.println.
          http://www.adrformacion.com/udsimg/java/3/img030003.gif

          • glenda says:

            pero, mm, no seria mucho cambiar, bno, es k se crean muchos botones y cosas asi, oh eso no importa?
            bno es k yo a penas estoy aprendiendo a usar graficos jeje, y se me ha vuelto dificil… luego por ejemplo tengo una duda lo d brackground para cambiar la ventana k creaste… como se haria o k :s

  18. Osuna says:

    Daniel gracias por tus respues y tu ayuda.

    Por cierto está bien chido tu blog, es más ya me animaste a empezar el mio.

  19. dan says:

    oye no puedo decasgar el codigo …. ayudame por favor me urge

  20. rocio mares says:

    podrias poner otro link para la descarga, ya que el anterior no es valido :(

  21. Ludwick says:

    Hola Daniel, quisiera que me ayudes diciendome si es posible crear en java un fichero que guarde un registro de alumnos con sus nombres, notas(8 notas) , promedios de notas(3 promedios parciales y un promedio general), y bueno, cosas asi, eso lo puedo hacer hasta cierto punto, el detalle es que al guardar la informacion, esta no se borre, sobre todo si apago el computador, dime, ¿es posible hacer ese programa?, como se puede hacer algo asi? que se guarde un archivo y no se borre su contenido al apagar mi computador y quew al volver a prenderlo y ejecutarlo, la informacion siga ahi. Agradecere tu ayuda. Mi correo es mcafee_85_04@hotmail.com

    • danielmd says:

      Se hace exactamente igual que el programa que puse arriba, solo agregas los campos correspondientes a cada parcial, haces una suma y los divides entre los parciales, asi obtienes el resultado del promedio general y lo guardas en otra variable.

      Si lo haces con archivos como el que explico, los datos no se borran de tu computadora a menos que borres el archivo, pero si ejecutas el programa siempre estarán ahí los datos.

      Saludos!

  22. Maria says:

    muy bueno lo que hiciste dany, estoy aprendiendo esto de las altas, bajas y modificación y creo que lo tuyo me puede servir de orientación, saludos!

  23. hugo says:

    Oye muy buen post, yo precisamente estaba creando una interfaz donde doy de alta, de baja y muestro la lista de usuarios registrados, nunca se me hubiera ocurrido crear un archivo temporal para el metodo de bajas y tambien podria servir para el de modificar datos, conrazon cuando queria modificar algun dato veia el archivo y no habia nada, solo el registro “modificado”, muy bien sigue asi

  24. sebastian says:

    holaaaa

  25. sebastian says:

    Hola!
    me podrias ayudar en mi proyecto sobre archivos en java..si confirmas la ayuda para q te envie mi abance xfa…

  26. cesar says:

    Podrías poner otro link para poder descargar el archivo?
    Gracias!

  27. Gerardo says:

    no sirve el link :( lo podrías volver a subir por favor

  28. Danny says:

    Link muerto, descanse en paz jaja, no ya enserio, ¿podrías resubirlo? por faaaaaaaaaaaaaaaaaaa

  29. Jhon says:

    hole podrias recargar el linck de descarga esque ya no existe gracias

Comentar