Autor Tema: Java Netbeans | Contador con problemas FileReader BufferedReader readLine  (Leído 2890 veces)

crashoscar1

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Hola, saludos a toda la comunidad.

Estoy aquí por un problema en un programa que he venido desarrollando, concretamente es un gestor de vídeos de Youtube, ya estaba todo terminado hasta que noté un problema, cuando busco un vídeo selecciono si lo quiero abrir en un navegador, se supone que cuando seleccione que si quiero entrar al navegador, el contador del video (el video está guardado en el arreglo vide, a la vez guardado en un archivo con persistencia) debería aumentar en uno.

El problema del contador es que cuando abro el vídeo el contador se le suma al primer video que está en el archivo, por ejemplo, abro el 6 vídeo y se aumenta en 1 el primero de la lista, mas no el que seleccioné, a continuación mi código.

Este método busca el vídeo, al final está la opción de cambiar contador del vídeo respecto a su título
Código: [Seleccionar]
public vide buscavideot(String titulo) {
        vide video = null;
        FileReader file;
        BufferedReader br;
        String record;

        boolean xx = this.verificaExistencia(titulo);   // Verifica si el video ingresado existe
        if (xx == true) {                                 //Si existe ejecute normalmente
            try {
                file = new FileReader(this.ruta);
                br = new BufferedReader(file);
                while ((record = br.readLine()) != null) {
                    String[] campos = record.split(",");
                    for (int i = 0; i < campos.length; i++) {
                        if (campos[0].equals(titulo)) {
                            int campo4 = Integer.parseInt(campos[4]);
                            int campo6 = Integer.parseInt(campos[6]);
                            video = new vide(campos[0], campos[1], campos[2], campos[3],                        campo4, campos[5], campo6);

                            int ss = video.getdura();
                            int min = 0;
                            int h = 0;

                            while (ss >= 60) {
                                if (ss >= 60) {
                                    min += 1;
                                    ss -= 60;
                                }
                                if (min >= 60) {
                                    h += 1;
                                    min -= 60;
                                }
                            }
                            String d = h + "h:" + min + "m:" + ss + "s";
                            JOptionPane.showMessageDialog(null, video.gettit() + "  " + video.getcat() + "  " + video.getgen() + "  " + video.getcan() + "  " + d + "  " + video.getURL() + "  " + video.getcon());
                            break;
                        }
                    }
                }

                int url = JOptionPane.showConfirmDialog(null, "¿Quiere ingresar al video?",        "Wait!", JOptionPane.YES_NO_OPTION);

                if (url == 0) {

                    try {
                        Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + video.getURL());
                    } catch (Exception err) {
                        JOptionPane.showMessageDialog(null, "Error: " + err);
                    }
                    this.cambiancont(titulo); // este es el cambiar contador con respecto al titul
                }

            } catch (IOException ioe) {
                JOptionPane.showMessageDialog(null, "Error buscando en el archivo...!!!");
            }
        } else {
            JOptionPane.showMessageDialog(null, "El video no existe");
        }
        return video;

    }

En el siguiente es el método cambiarcont(String titulo) ya que posiblemente el error esté ahí

Código: [Seleccionar]
public void cambiancont(String titulo) {
        ArrayList<vide> videos = this.getvideo();
        for (int i = 0; i < videos.size(); i++) {
            if (titulo == videos.get(i).gettit()) {
                int cont = videos.get(i).getcon() + 1;
                this.cambiarCon(cont);
                break;
            }
        }
    }

El siguiente es el metodo cambiarcon(int con)  que lo que hace es cambiar el contador

Código: [Seleccionar]
public void cambiarCon(int con) {
        ArrayList<vide> videos = this.getvideo();

        for (vide video : videos) {
            if (video.getcon() != con) {

                video.setcon(con);

                this.reemplazArchivo(videos);
                break;

            }
        }
    }

Y por último el reempazArchivo por si se necesita

Código: [Seleccionar]
public void reemplazArchivo(ArrayList<vide> videos) {
        try {
            File file = new File(this.ruta);
            FileWriter fr = new FileWriter(file, false);
            PrintWriter ps = new PrintWriter(fr);
            for (vide video : videos) {
                ps.println(video.gettit() + "," + video.getcat() + "," + video.getgen() + "," + video.getcan() + "," + video.getdura() + "," + video.getURL() + "," + video.getcon());
            }
            ps.close();
        } catch (IOException ioe) {
            JOptionPane.showMessageDialog(null, "Error guardando en el archivo...!!!");
        }
    }

Muchas gracias por su tiempo.
 
« Última modificación: 03 de Diciembre 2016, 19:56 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Java Netbeans | Contador con problemas FileReader BufferedReader readLine
« Respuesta #1 en: 03 de Diciembre 2016, 19:56 »
Hola crashoscar1 para entender lo que planteas sería bueno que pusieras un ejemplo

Una cosa que resulta un poco extraña es if (titulo == videos.get(i).gettit()) {

Si titulo es un String la comparación no debe hacerse con == sino con equals

Esto está explicado en el curso de Java de la web en https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".