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();
}
}