A voir également:
- Java txt file parsing
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Host file - Guide
- .Bin file - Guide
- .Dat file - Guide
6 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
20 mars 2012 à 17:12
20 mars 2012 à 17:12
Vu qu'on a aucune idée ce que sont tes champs et donc ce que contient ta ligne c'est très compliqué à répondre.
Quand tu dis "210 bytes", c'est des vrais bytes (des entiers codés sur un octet) ou est-ce que tu confonds avec autre chose (des char par exemple)
Sinon, tu fais 210/17, et tu fais donc 17 champs de 12,35 "bytes" ...
Quand tu dis "210 bytes", c'est des vrais bytes (des entiers codés sur un octet) ou est-ce que tu confonds avec autre chose (des char par exemple)
Sinon, tu fais 210/17, et tu fais donc 17 champs de 12,35 "bytes" ...
Utilisateur anonyme
20 mars 2012 à 18:35
20 mars 2012 à 18:35
Salut,
Etant donné que 210 n'est pas divisible par 17 et que tu dis connaître la taille de chaque champ, peux tu nous dire si cette taille (de champ) est la même pour toutes les lignes et si oui, ce qui est souhaitable, quelles sont ces 17 tailles ?
Merci
Etant donné que 210 n'est pas divisible par 17 et que tu dis connaître la taille de chaque champ, peux tu nous dire si cette taille (de champ) est la même pour toutes les lignes et si oui, ce qui est souhaitable, quelles sont ces 17 tailles ?
Merci
Utilisateur anonyme
Modifié par danimo le 21/03/2012 à 10:06
Modifié par danimo le 21/03/2012 à 10:06
Re,
Il suffit de mettre les tailles des 17 champs dans un tableau
Bien entendu, il faut exploiter ces sous-chaînes avant la lecture de la ligne suivante.
Cordialement,
Dan
--Plus on apprend... plus on se rend compte qu'on ne connaît pas grand-chose.
Il suffit de mettre les tailles des 17 champs dans un tableau
String tailleChamps = "15,24,24,24,14,14,3,5,3,4,1,2,1,24,24,24,24"; String[] lesTailles = tailleChamps.split(","); //L'extraction des 17 sous-chaines d'une ligne se fera par substring en utilisant les longueurs stockées dans le tableau lesTailles //Simulation de la lecture d'une ligne: String uneLigne = "AaaaaaaaaaaaaaABbbbbbbbbbbbbbbbbbbbbbbBCccccccccccccccccccccccCDddddddddddddddddddddddDEeeeeeeeeeeeeEFffffffffffffFGgGHhhhHIiIJjjJKLLMNnnnnnnnnnnnnnnnnnnnnnnNOooooooooooooooooooooooOPppppppppppppppppppppppPQqqqqqqqqqqqqqqqqqqqqqqQcr"; //Découpage de la ligne String[] lesSousChaines = new String[17]; for(int i = 0; i < lesTailles.length; i++) { lesSousChaines[i] = uneLigne.substring(0,Integer.parseInt(lesTailles[i])); // le reste de la ligne: uneLigne = uneLigne.substring(Integer.parseInt(lesTailles[i])); } // affichage de contrôle: for(int i = 0; i < lesTailles.length; i++) System.out.println("item " + (i +1) + " = " + lesSousChaines[i]);
Bien entendu, il faut exploiter ces sous-chaînes avant la lecture de la ligne suivante.
Cordialement,
Dan
--Plus on apprend... plus on se rend compte qu'on ne connaît pas grand-chose.
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
22 mars 2012 à 19:24
22 mars 2012 à 19:24
C'est parce que ta String n'est pas assez longue pour le parsing attendu.
Dans le code de Danimo tu peux rajouter ces instructions pour avoir le détail de l'erreur :
Dans le code de Danimo tu peux rajouter ces instructions pour avoir le détail de l'erreur :
try { lesSousChaines[i] = uneLigne.substring(0,Integer.parseInt(lesTailles[i])); } catch (java.lang.StringIndexOutOfBoundsException e) { System.err.println("i="+i+" | uneLigne="+uneLigne); System.err.println(lesTailles[i]+" caractères attendus"); System.err.println(uneLigne.length()+" caractères trouvés"); throw(e); }
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
24 mars 2012 à 15:54
24 mars 2012 à 15:54
Tout dépend comment tu fais la lecture de ton fichier, mais avec un Scanner ça donne :
Scanner sc = new Scanner(new File("D:\\test.txt")); sc.nextLine(); String str = sc.nextLine(); while (sc.hasNextLine()) { traitement(str); // la méthode de traitement d'une ligne str = sc.nextLine(); } sc.close();
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
j'utilise Mysql , connaissez vous un lien utile qui me permettra de terminer mon projet, à savoir : assurer la connexion avec la database et y stocker les données après parsing .. je me perds un peu avec tout ce que je trouve sur le net
Je vous remercie bien!
Je vous remercie bien!
20 mars 2012 à 18:04
chaque ligne représente un enregistrement, des entiers et des espace si le champs est vide
ça donne des ligne de la forme :
0002350888778800 357789908888 12355.....(etc)
0003555889998800537599999999 57712355.....
je veux par exemple pr mon premier champs (1ère ligne) juste les 7 premiers caractère , le 2ème les 5 qui suit einsi de suite
pouvez me donner des indication?
merci
20 mars 2012 à 18:09
Il va falloir être beaucoup plus clair sur ce que tu veux, parce que pour l'instant il n'y a aucun critère utilisable...
20 mars 2012 à 18:13
les champs sont de même longueur pour toutes les lignes de ..
20 mars 2012 à 18:14
20 mars 2012 à 18:22
Tu dis que "0002350888778800 357789908888 12355" doit être découpée en "0002350" et "88877", je ne vois aucune raison à cela...
Si tu avais "Bonjour,Toto,Carambar", le critère de découpe serait la virgule...