2017-10-02 5 views
0

J'ai écrit le code et je peux enregistrer les mêmes données dans un fichier .csv. Here is a my file's imageTrouver tout l'élément par des paramètres personnalisés dans un fichier .csv

Maintenant je veux lire mes données du fichier csv par exemple par UID. J'ai essayé mais je ne peux pas obtenir toutes mes données par mon nom. est ici la source Pojo code de classe

public class Product { 
private String UID; 
private String name; 
private String personalNumber; 



@Override 
public String toString() { 
    return "Product{" + 
      "UID='" + UID + '\'' + 
      ", name='" + name + '\'' + 
      ", personalNumber='" + personalNumber + '\'' + 

      ", gender='" + gender + '\'' + 
      ", issueState='" + issueState + '\'' + 
      ", documentType='" + documentType + '\'' + 
      '}'; 
} 

private String gender; 
private String issueState; 
private String documentType; 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getUID() { 

    return UID; 
} 

public void setUID(String UID) { 
    this.UID = UID; 
} 

public String getPersonalNumber() { 
    return personalNumber; 
} 

public void setPersonalNumber(String personalNumber) { 
    this.personalNumber = personalNumber; 
} 


public String getGender() { 
    return gender; 
} 

public void setGender(String gender) { 
    this.gender = gender; 
} 

public String getIssueState() { 
    return issueState; 
} 

public void setIssueState(String issueState) { 
    this.issueState = issueState; 
} 

public String getDocumentType() { 
    return documentType; 
} 

public void setDocumentType(String documentType) { 
    this.documentType = documentType; 
} 

} Et voici une classe principale java

public class ReadFromFile { 
public static void main(String[] args) throws Exception { 
    File file = new File("C:\\\\cardReaderID\\2017-08-31.csv"); 
    Scanner input = new Scanner(file); 


    Product[] products = new Product[0]; 
    while(input.hasNext()) { 
     String UID = input.next(); 
     String name = input.next(); 
     String personalNumber = input.next(); 


     Product newProduct = new Product(); 
     newProduct.setUID(UID); 
     newProduct.setName(name); 
     newProduct.setPersonalNumber(personalNumber); 
    } 

    for (Product product : products) { 
     System.err.println(product); 
    } 


} 

Comment puis-je lire toutes mes données à partir du fichier csv par nom? Je veux dire, UID, nom complet et etc. Comment puis-je résoudre mon problème? Merci à tous

+0

Etes-vous sûr input.useDelimiter ("- | \ n") fonctionne comme prévu? Il est préférable d'utiliser System.getProperty (line.separator) pour obtenir le séparateur de ligne sur une plate-forme particulière. –

+0

Désolé je me suis trompé. Supprimé cette ligne @dsp_user – BekaKK

+0

Ne pas analyser le fichier csv vous-même. Il ya beaucoup de problèmes, y compris les citations, les sauts de ligne, etc. Au lieu de cela, vous devriez utiliser des bibliothèques csv dédiées, personnellement, je recommande les analyseurs d'univocité. Aussi, jetez un oeil sur le projet Lombok, cela pourrait simplifier votre classe POJO. –

Répondre

0

Voici une solution

public class CSVReader { 

public static void main(String[] args) { 

    String csvFile= "C:\\\\cardReaderID\\2017-08-31.csv"; 
    BufferedReader br = null; 
    String line = ""; 
    String cvsSplitBy = ","; 

    try { 

     br = new BufferedReader(new FileReader(csvFile)); 
     while ((line = br.readLine()) != null) { 

      // use comma as separator 
      String[] country = line.split(cvsSplitBy); 

      System.out.println("Country [code= " + country[4] + " , name=" + country[5] + "]"); 

     } 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     if (br != null) { 
      try { 
       br.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

}