Comment lire ligne par ligne en utilisant FileReader
Merci de votre attention.
J'ai créé un programme pour lequel j'utilise un formulaire de connexion et un formulaire d'inscription. Une fois que les utilisateurs ont enregistré leur courrier électronique, leur mot de passe sera enregistré dans submit.txt
. Ensuite, ils retourneront au formulaire de connexion et entreront leur adresse électronique et leur mot de passe qui seront enregistrés dans submit.txt
.
Dans mon code, j'utilise un fichier d'écriture pour le formulaire d'inscription et un fichier lu pour le formulaire de connexion. Mais ça ne marche pas. Je connais mon problème dans le code utilisé pour Read File. Pouvez-vous m'aider à réaliser cela?.
Merci trop pour votre aide.
if (checkPassword(usern, hash)) {
System.out.println("Logged in!");
ChooseWindow ptb = new ChooseWindow();
ptb.setVisible(true);
LoginWindow.this.dispose();
} else {
System.out.println("Wrong password");
}
public boolean checkPassword(String username, String pass) {
try {
FileReader inFile = new FileReader("/users/Ender/Desktop/GetUser/submit.txt");
BufferedReader inStream = new BufferedReader(inFile);
String inString;
while ((inString = inStream.readLine()) != null) {}
inStream.close();
}catch (IOException e) {
e.printStackTrace();
}
return false;
}
voici mon code à lire dans un fichier:
String line;
try {
BufferedReader bufferreader = new BufferedReader(new FileReader("C:\\Users\\ahmad\\Desktop\\aaa.TXT"));
while ((line = bufferreader.readLine()) != null) {
/**
Your implementation
**/
line = bufferreader.readLine();
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
En supposant que nous ayons un fichier avec username
et hash
stocké comme suit:
Bonjour le monde
Test Test
DumbUser 12345
Utilisateur sjklfashm-0998 () (&
et nous voulons utiliser le premier mot de chaque ligne sous la forme username
et le second sous la forme password
/hash
. Alors l'idée est:
- Lire une ligne
- Fractionner la ligne en ""
- Comparez la première partie à
username
et la seconde àpass
- Si la correspondance est vraie, sinon recommencez
Quels sont les résultats dans ce code:
public boolean checkPassword(String username, String pass) {
// if there is no username or no password you can not log in
if(username == null || pass == null){ // diff
return false; // diff
} // diff
try {
FileReader inFile = new FileReader(PASSWORD_FILE);
BufferedReader inStream = new BufferedReader(inFile);
String inString;
while ((inString = inStream.readLine()) != null) {
// we split every line into two parts separated by a space " "
String usernameHash[] = inString.split(" "); // diff
// if there are more or less than two parts this line is corrupted and useless
if(usernameHash.length == 2 // diff
&& username.equals(usernameHash[0]) // diff
&& pass.equals(usernameHash[1])){ // diff
// if username matches the first part and hash the second everything is goo
return true; // diff
} // diff
}
inStream.close();
}catch (IOException e) {
e.printStackTrace();
}
return false;
}
J'ai marqué les parties où mon code diffère du vôtre avec // diff
Vous pouvez lire un fichier en utilisant le code suivant.
try {
BufferedReader bufferreader = new BufferedReader(new FileReader("./users/Ender/Desktop/GetUser/submit.txt"));
String line;
while ((line = bufferreader.readLine()) != null) {
// line variable contains the readed line
// You can append it to another String to get the whole text or anything you like
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
Si vous voulez écrire un fichier, utilisez le code suivant.
BufferedWriter writer = new BufferedWriter(new FileWriter("./users/Ender/Desktop/GetUser/submit.txt"));
writer.write(your_text);
writer.close();
Si vous souhaitez ajouter du texte, utilisez le code suivant pour créer l'instance de BufferedWriter
BufferedWriter writer = new BufferedWriter(new FileWriter("/users/Ender/Desktop/GetUser/submit.txt", true));