BufferedReader跳过每一行

从CSV读取它会跳过每隔一行。 我有两个CSV文件,一个用于用户,一个用于属性 – 密钥ID是用户。

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  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){}} } } 

我和以下用户一起运行它

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

每个奇数编号都在工作并检测到用户已登录,每秒都在跳过。 我读了,我认为我没有.nextLine()在这个链接中运行跳过,但我只在周五开始使用CSV和BufferedReader!

BufferedReader readLine每隔一行跳过一次

它跳过每一行,因为你在每次迭代中读取两行而只使用奇数行。

我建议改为使用

 while ((thisLine = reader.readLine()) != null) { // only read once per loop. 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); } } // out side the loop. System.out.print("\nNo Further Properties Found For This User\n");