Как читать строку за строкой с помощью FileReader
Спасибо за внимание.
Я создал программу, в которой я использую форму входа в систему и форму регистрации.
Как только пользователи зарегистрируют свою электронную почту, и их пароль будет сохранен в submit.txt
. Затем они вернутся к форме входа и введите свой адрес электронной почты и пароль, которые сохраняются в submit.txt
.
в моем коде я использую файл записи для регистрационной формы и читаю файл для формы входа. Но это не работает. Я знаю свою проблему в коде, используемом для чтения файла. Может ты поможешь мне понять это?.
большое спасибо за вашу помощь.
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;
}
3 ответов
вот мой код для чтения из файла :
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();
}
Предположим у нас есть файл с username
и hash
хранить следующим образом:
Привет, Мир
Тест Тест
DumbUser 12345
Пользователь sjklfashm-0998()(&
и мы хотим использовать первое слово в каждой строке как username
, а второй password
/hash
. Тогда идея:
- читать строки
- разделите линию на части на " "
- сравните первую часть с
username
и второйpass
- если есть совпадение return true, else start over
что приводит к этому коду:
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;
}
я отметил части, где мой код отличается от вашего с // diff
вы можете прочитать файл, используя следующий код..
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();
}
если вы хотите записать файл используйте следующий код..
BufferedWriter writer = new BufferedWriter(new FileWriter("./users/Ender/Desktop/GetUser/submit.txt"));
writer.write(your_text);
writer.close();
если вы хотите добавить текст, используйте следующий код для создания экземпляра BufferedWriter
BufferedWriter writer = new BufferedWriter(new FileWriter("/users/Ender/Desktop/GetUser/submit.txt", true));