BufferedReader überspringt jede zweite Zeile

Beim Lesen aus einer CSV wird jede zweite Zeile übersprungen. Ich habe zwei CSV-Dateien, eine für Benutzer, eine für Eigenschaften - die Schlüssel-ID ist Benutzer.

    String userName;
    static String breakLine = "\n--------------------\n";
        /**
        * Method to create a new user in a CSV File
        * @param sFileName
        * @param user
        */
   static void writeToCsvFile(String sFileName, User user)
   {
    try
    {
        FileWriter writer = new FileWriter(sFileName, true);


        writer.append(user.displayUserName()); // get username from userinput
        writer.append(","); // tabs to next record

        writer.append(user.getPassword()); //gets password from userinput
        writer.append(","); //tabs to next record
        writer.append("\n");

        writer.flush();
        writer.close();
        System.out.print("\nUser Successfully Created\n");
    }
    catch(IOException e)
    {
         e.printStackTrace();
    } 

   }





   /**
    * Class to read User information from specified CSV file
    * @param sFileName
    * @param user
    * @throws FileNotFoundException
    */
   static boolean readFromCsvFile(String sFileName, User user) throws FileNotFoundException
   {
       String thisLine;
       BufferedReader reader = new BufferedReader(new FileReader(sFileName));


        try
        {

        //  thisLine = reader.readLine();
          //System.out.print(thisLine);


           while((thisLine = reader.readLine()) != null)
                {
                    String userDetails[] = thisLine.split(",");

                    if ((user.displayUserName().equals(userDetails[0])))
                    {
                        System.out.print("\nUser <-" + user.displayUserName() + " -> exists! Logging In\n\n");
                        return true;
                    }

                    else if ((thisLine = reader.readLine()) == null)
                    {
                        System.out.print("\nNo User Details Matching Those Entered Exist. Please Register or Recheck Details.");
                        return false;
                    }
               }

        }
        catch(IOException e)
        {
            System.out.print("\nUser does not exist\n"); 
            e.printStackTrace();
            return false;
        } 


        finally{
            try
            {   reader.close();
            }catch (IOException e){}}
        return false;
            }


   static void writeToPropertyFile(String sFileName, Property property)
   {

    try
    {
        FileWriter writer = new FileWriter(sFileName, true);



        writer.append(property.getUser()); // get username from userinput
        writer.append(","); // tabs to next record

        writer.append(property.getAddress()); //gets address from userinput
        writer.append(","); //tabs to next record

        writer.append(property.getValue()); //gets property value from userinput
        writer.append(","); //tabs to next record

        writer.append(property.getLocation()); //gets property type from userinput
        writer.append(","); //tabs to next record

        writer.append(property.getResidenceStatus()); //gets residence status from userinput
        writer.append(","); //tabs to next record

        writer.append(property.getPaymentStatus()); //gets payment status from userinput
        writer.append(","); //tabs to next record

        writer.append(property.totalTax(property.privateResidence));
        writer.append(",");

        writer.append("\n");

        writer.flush();
        writer.close();
        System.out.print("\nProperty Successfully Saved to " + property.getUser() + "\n");
    }
    catch(IOException e)
    {
         e.printStackTrace();
    } 

   }

/**
 * Method to read and print all properties belonging to a user
 * @param sFileName
 * @param property
 * @param userName
 * @throws FileNotFoundException
 */
static void readFromPropertyFile(String sFileName, String userName) throws FileNotFoundException
{

       String thisLine;
       BufferedReader reader = new BufferedReader(new FileReader(sFileName));


        try
        {
            //thisLine = reader.readLine(); //skips first line in CSV


           while((thisLine = reader.readLine()) != null)
                {

                    String propertyDetails[] = thisLine.split(",");



                    if (propertyDetails[0].equals(userName))
                    {
                    System.out.print("\nUser: " + propertyDetails[0] + "\nAddress: " + propertyDetails[1] + "\nEst. Value: " + propertyDetails[2]
                            + "\nLocation Cat: " + propertyDetails[3] + "\nPrivate Residence: " + propertyDetails[4] + "\nTax Paid: " + propertyDetails[5] +  "\nTax Due: " + propertyDetails[6] + breakLine);

                    }

                    else if ((thisLine = reader.readLine()) == null)
                        System.out.print("\nNo Further Properties Found For This User\n");


               }

        }
        catch(IOException e)
        {
            System.out.print("\nProperties do not exist\n"); 
            e.printStackTrace();
        } 


        finally{
            try
            {   reader.close();
            }catch (IOException e){}}
            }


}

Ich habe es mit den folgenden Benutzern ausgeführt

Chris,password
Michelle,password
Zach,password
etc (on seperate lines, seperated by appending \n at the end of the input stage)

Jede ungerade Nummer funktionierte und stellte fest, dass der Benutzer angemeldet war, jede Sekunde wird übersprungen. Ich habe gelesen und glaube nicht, dass ich eine .nextLine () habe, die überspringt, wie in diesem Link, aber ich beginne erst am Freitag mit der Verwendung von CSVs und BufferedReader!

BufferedReader readLine überspringt jede zweite Zeile

Antworten auf die Frage(1)

Ihre Antwort auf die Frage