Чтение и сравнение строки текстового файла - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть простая программа входа в систему, и моей очень простой незащищенной базой данных является текстовый файл, который является

mohammed
badpassword1
fahad
badpassword2
saad
Badpassword3
faisal
badpassword4
jack
badpasswod5

и у меня есть этот код, читающий каждую строку в текстовом файле и печатающий его

Я просто хочу передать имя пользователя и получить его, что является следующей строкой, но я не смог Я пытался сохранить его в массиве и получить пароль от следующего элемента от имени пользователя, но все элементы имеют значение NULL, я не знаю почему я могу получить помощь?

public static void main(String[] args) throws Exception{

    try {
        FileReader reader = new FileReader("/Users/mohammed/Downloads/testFile.txt");
        BufferedReader bufferedReader = new BufferedReader(reader);

        String line = new String();

        while ((line = bufferedReader.readLine()) != null) {
            System.out.println(line);
        }
        reader.close();

    } catch (IOException e) {
        e.printStackTrace();
    }
}

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Я знаю, что это может быть немного глупым решением, но оно должно работать.

public class User {
    private String username;
    private String password;

    // getters, setters, toString
}

....

public static void main(String[] args) throws Exception{

    try {
        FileReader reader = new FileReader("/Users/mohammed/Downloads/testFile.txt");
        BufferedReader bufferedReader = new BufferedReader(reader);

        String line = new String();

        // let's have this one to hold users
        List<User> users = new ArrayList<>();

        int index = 1;
        User user = new User();
        while ((line = bufferedReader.readLine()) != null) {
            now we will read line by line, create User objects and put them into the list
            System.out.println(line);
            if (index > 2) {
                // means you are reading the third line, so that's the name of the next user
                users.add(user); // save previous user
                user = new User(); // object to hold new one
                index = 1; // reset index
            }
            if (index == 1) {
                user.setUserName(line);
            }
            if (index == 2) {
                user.setPassword(line);
            }
            index++;
        }
        reader.close();

    } catch (IOException e) {
        e.printStackTrace();
    }

    // and once you have all the users in the list you can do whatever you need
   //e.g. print all users
   users.forEach(System.out::println);

   // find the user you need, e.g. with name 'fahad'
   final User fahad = users.stream().filter(u -> { return u.getUserName().equals("fahad")}).findFirst();
   System.out.println(fahad.getPassword()); // for instance
}
0 голосов
/ 28 апреля 2018

Сравните строку, которую вы сейчас читаете, с строкой, которую вы ищете (имя пользователя), и выведите следующую

public static void main(String[] args) throws Exception{

try {
    FileReader reader = new FileReader("/Users/mohammed/Downloads/testFile.txt");
    BufferedReader bufferedReader = new BufferedReader(reader);
    String username="mohammed";
    String line = new String();

    while ((line = bufferedReader.readLine()) != null) 
        if(line.equals(username){
            System.out.println(bufferedReader.readLine());
            break;
        }

    reader.close();

} catch (IOException e) {
    e.printStackTrace();
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...