web-dev-qa-db-fra.com

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;
 }
6
Ender phan

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

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

2
Aracurunir

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)); 
0
Ramesh-X