elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problema con archivos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con archivos  (Leído 283 veces)
Ruusa

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Problema con archivos
« en: 23 Octubre 2020, 01:34 »

Hola buenas tardes, estoy haciendo un programa en java con archivos, directorios, tengo que agregar el nombre de los archivos por teclado y validar que ese mismo nombre no exista en el directorio, para eso cree un array de archivos, donde guardo los nombres de los archivos y su correspondiente ubicacion.
El problema es que la validacion tira un resultado incorrecto cuando pongo dos archivos con el mismo nombre, no me tendria que dejar agregar el mismo nombre de archivo al array archi y sin embargo lo agrega igual,  si alguien me podria ayudar se lo agradeceria.

public class Archivo {

   String nombre;
   int longitud;
   String ubicacion;
   int bloqueInicial;
   int bloqueFinal;
   
   
   public void setNombre(String nombre) {
      this.nombre=nombre;
   }
   
   public void setLongitud(int l) {
      this.longitud=l;
   }
   
   public void setUbicacion(String ubicacion) {
      this.ubicacion=ubicacion;
   }
   
   public void setBloqueInicial(int bloque) {
      this.bloqueInicial=bloque;
   }
   
   public void setBloqueFinal(int bloque) {
      this.bloqueFinal=bloque;
   }
   
   public String getNombre() {
      return this.nombre;
   }
   
   public int getLongitud() {
   return this.longitud;
   }

    public String getUbicacion() {
    return this.ubicacion;
    }
   
    public int getBloqueInicial() {
       return this.bloqueInicial;
    }
   
    public int getBloqueFinal() {
       return this.bloqueFinal;
    }
-----------------------------------------------------------------------------------------

import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;

public class Directorio {
  static File directorio;
  static File archivo;
  int bloqueS=0;
  static int iArchivo=0;

 static ArrayList<Archivo> archi = new ArrayList<>();
private Scanner nombre;
 

public void crearDirectorio () {
   
     directorio = new File("directorio2");
   directorio.mkdir();
}


public boolean verificar (String nombre) {
boolean t=true;

   for (int i=0; i<archi.size();i++) {
      if (archi.get(i).getNombre()==nombre) {
         t=false;
         System.out.println("es igual");
      }
   }
   return t;
}


public void agregarArchivo () {   //agrega el archivo al directorio y al array
   boolean c;
       for (int i=0; i<3;i++) {
      System.out.println("Ingrese nombre de archivo");
      Scanner nom= new Scanner(System.in);
      String nombre= nom.nextLine();
      c=verificar(nombre);
      if (c!=false) {
       try {
      archivo = new File(directorio,nombre);
      archivo.createNewFile();
   
      Archivo aux = new Archivo();
     aux.setNombre(archivo.getName());
     aux.setUbicacion(archivo.getAbsolutePath());
     aux.setLongitud((int)archivo.length());
     archi.add(aux);
    
   } catch (IOException e) {
      e.printStackTrace();
   }
      
   } else
      System.out.println("El nombre con ese archivo ya existe");
   
   }
}

public static void mostrarArchivos() {
   System.out.println("                           FAT                             ");
   for (int i=0; i<archi.size(); i++) {
    System.out.println(" ");
   System.out.println("**********************************************************************");
   System.out.println("     Numero de bloque: "+i);
   //System.out.println("     Bloque sig: "+archi.get(i).bloqueSig);
   System.out.println("     Longitud: "+archi.get(i).longitud);
   System.out.println("     Nombre de archivo:   "+archi.get(i).getNombre());
   //System.out.println("     Estado bloque: "+archi.get(i).getEstado());
   System.out.println("     Ubicacion en disco: "+archi.get(i).getUbicacion());
    System.out.println("***********************************************************************");
   System.out.println(" ");
   
 
       
   }
   }

public static void main(String[] args) {
   Directorio d = new Directorio();
   d.crearDirectorio();
   d.agregarArchivo();
   d.mostrarArchivos();
    }
   
   
}
   


En línea

K-YreX


Desconectado Desconectado

Mensajes: 793



Ver Perfil
Re: Problema con archivos
« Respuesta #1 en: 23 Octubre 2020, 01:59 »

No puedes comparar instancias de la clase String (ni de ninguna clase) usando el operador ==. El operador == compara que las direcciones de memoria sean las mismas, es decir, que sea la misma instancias.

Para comparar el contenido y no la referencia tienes que utilizar el método equals().


Empieza a utilizar etiquetas de Código GeSHi para adjuntar tu código.
Para colocarlas tienes que seleccionar tu código y con él seleccionado, abrir el desplegable llamado Código GeSHi y elegir Java.
Código
  1. public class MyClass {
  2.  //...
  3. }


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
rub'n


Desconectado Desconectado

Mensajes: 1.096


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: Problema con archivos
« Respuesta #2 en: 23 Octubre 2020, 11:16 »

No puedes comparar instancias de la clase String (ni de ninguna clase) usando el operador ==. El operador == compara que las direcciones de memoria sean las mismas, es decir, que sea la misma instancias.

Para comparar el contenido y no la referencia tienes que utilizar el método equals().


Empieza a utilizar etiquetas de Código GeSHi para adjuntar tu código.
Para colocarlas tienes que seleccionar tu código y con él seleccionado, abrir el desplegable llamado Código GeSHi y elegir Java.
Código
  1. public class MyClass {
  2.  //...
  3. }

tal cual doc asi mismo.

Ponle un post-decremento en el else, por el archivo que estaria posiblemente repetido.

Código
  1. } else {
  2.    i--;
  3.    System.out.println("El nombre con ese archivo ya existe");
  4. }
  5.  
« Última modificación: 23 Octubre 2020, 19:05 por rub'n » En línea



rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen King.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con archivos
Multimedia
_Joselo_ 3 809 Último mensaje 14 Enero 2005, 21:04
por ....Gusto....
Problema con archivos mp3
Multimedia
halseq 6 3,988 Último mensaje 11 Marzo 2011, 20:40
por Songoku
Problema con Archivos FLV « 1 2 »
Multimedia
ignorantev1.1 14 10,991 Último mensaje 31 Octubre 2012, 04:18
por ejvr860
problema de archivos con css
Desarrollo Web
greenselves 2 1,371 Último mensaje 12 Agosto 2011, 00:48
por greenselves
problema con archivos
Programación C/C++
m@o_614 9 2,607 Último mensaje 3 Octubre 2013, 18:52
por rir3760
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines