2012-11-18 5 views
0

Je possède ce code:problèmes de lecture des données de fichier texte en Java

BufferedReader br =new BufferedReader(new FileReader("userdetails.txt")); 
    String str; 
    ArrayList<String> stringList = new ArrayList<String>(); 
    while ((str=br.readLine())!=null){ 
     String datavalue [] = str.split(","); 
     String category = datavalue[0]; 
     String value = datavalue[1]; 
     stringList.add(category); 
     stringList.add(value); 
    } 
    br.close(); 

il fonctionne lorsque les variables catégorie et la valeur n'ont pas une virgule (,), mais les valeurs de la valeur de la variable ne contient Les virgules. Est-ce que je peux diviser l'index sans utiliser de virgule?

+0

Vous aurez besoin d'utiliser un séparateur différent pour les valeurs si la valeur elles-mêmes contiennent la virgule que vous utilisez comme votre délimiteur. – dinukadev

Répondre

0

La solution est donnée ci-dessous:

BufferedReader br =new BufferedReader(new FileReader("userdetails.txt")); 
    String str; 
    ArrayList<String> stringList = new ArrayList<String>(); 
    while ((str=br.readLine())!=null){ 
     int firstIndexOfComma = str.indexOf(','); 
     String category = str.substring(0, firstIndexOfComma); 
     String value = str.substring(firstIndexOfComma + 1); 
     stringList.add(category); 
     stringList.add(value); 
     System.out.println(category+" "+value); 
    } 
    br.close(); 
-2

Pas 100% sûr, mais ne pourriez-vous pas simplement faire String datavalue [] = str.split("--"); ou quelque chose?

fichier exemple:

x,y,z--123--Hello World

sortie:

"x,y,z", "123", "Hello World"

+0

-1, Pas sûr, ou quelque chose –

+0

pouvez-vous me donner un exemple de format d'entrée du fichier? –

+0

Correction de la réponse. – user1729831

0

Lorsque des données a '' il est généralement appelé fichier CSV. OpenCSV est assez utilisé bibliothèque pour le gérer. Le format semble simple, mais il a des bizarreries. Voir wikipedia quelques détails

0

Si je vous ai bien compris:

String str = "category,vvvv,vvv"; 
    int i = str.indexOf(','); 
    String category = str.substring(0, i); 
    String value = str.substring(i + 1); 
0

split() utilise regex. si le code du lecteur fonctionne parfaitement, faire

str.split("\\,"); 
Questions connexes