Salve a tutti,
sto cercando di creare un metodo per l'autenticazione di un utente, tramite l'inserimento di username e password. Il mio file.txt contiene le seguenti informazioni: username, password, nome e cognome. Riesco a far inserire sia username che password e a farmi restituire "Password non valida" nel caso in cui la password inserita dall'utente non corrisponda a quella dell'username. Il mio problema è che non riesco a farmi restituire "Username non valida" solo nel caso in cui nel file non sia presente l'username inserito, nemmeno se provo a inserire tutte le parole in un array e poi leggere l'array. Come posso fare?
codice:
public void loginL() {
String id;
System.out.println("Username:");
Scanner i = new Scanner(System.in);
id = i.nextLine();
FileInputStream fstream = null;
DataInputStream in = null;
try {
// apro il file
fstream = new FileInputStream("lettori.txt");
// prendo l'inputStream
in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
ArrayList<String> par = new ArrayList<>();
// Leggo il file riga per riga
while ((strLine = br.readLine()) != null) {
if(strLine.contains(id)){
// se la riga è uguale a quella ricercata
String p;
System.out.println("Password:");
Scanner ps = new Scanner(System.in);
p = ps.nextLine();
if (strLine.contains(p)) {
System.out.println("Autenticazione eseguita con successo!");
System.out.println(strLine);
} else {
System.out.println("Password non valida");
}
ps.close();
}
else {
}
String[] strings=strLine.split(" ");
String ide=strings[0];
String password=strings[1];
String nome=strings[2];
String cognome=strings[3];
par.add(ide);
par.add(password);
par.add(nome);
par.add(cognome);
}
if (!par.equals(id)) {
System.out.println("Username non valida");
}
fstream.close();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
i.close();
}