Wiska
Messages postés15Date d'inscriptionvendredi 30 mai 2008StatutMembreDernière intervention13 août 2012
-
22 juil. 2009 à 15:10
Wiska
Messages postés15Date d'inscriptionvendredi 30 mai 2008StatutMembreDernière intervention13 août 2012
-
23 juil. 2009 à 11:57
Bonjour,
Voici mon problème:
- Je cherche à ouvrir un fichier .txt (c'est OK)
- A charger son contenu et à découper la chaîne de caractère.
La structure du fichier texte est le suivant:
7.3|-1.2|1.8|.....
10|-2
10|-1|3.1|4.5|...
-5|-3
2.5|-2.5
15|-5
(...)
(il s'agit de coordonnées x et y pour générer des points sous JFreeChart par la suite)
En gros, je voudrais:
- récupérer la partie à gauche du pipe et la stocker dans une première ArrayList.
- récupérer la partie à droite du pipe et la stocker dans une deuxième ArrayList
- et ainsi de suite jusqu'à temps que la ligne se termine. Une fois le retour à la ligne effectué, recommencer les opérations écrites ci-dessus.
Je passe par une ArrayList car je ne connais pas les dimension de chaque ligne cad que chaque ligne n'aura pas le même nombre de paramètre mais c'est uniquement les deux premier élément rencontré sur la ligne qui m'intéresse (le reste n'étant pas à exploiter).
Le format du fichier txt m'est imposé sous cette forme.
De mon coté j'ai bien évidement cherché et je n'ai encore trouvé aucune solution qui me convienne.
Voici le peu de source que j'ai:
public ArrayList FichierTexte;
(...)
public void ChargerFichier(String file)
{
try
{
BufferedReader br = new BufferedReader(new FileReader(file));
try
{
String mot;
while ((mot=br.readLine())!=null )
{
FichierTexte.add(mot);
}
System.out.println(FichierTexte);
}
finally
{
br.close();
}
}
catch(IOException e)
{
System.out.println((new StringBuilder()).append("Une operation sur " +
"les fichiers a leve l'exception ").append(e).toString());
} /*
La partie commenté correspondant à une recherche du net.
Apparemment, dans mes recherche, je retrouve souvent l'utilisation de la fonction split() ou encore de StringTokenrer (ou un truc dans le genre).
Je précise que je code uniquement en Delphi et que j'ai que 3 mois de pratique sous Java...
(On me donne ce sujet sous java pour tuer le temps vu qu'il me reste que deux semaine avant de terminer mon contrat d'apprentissage et que j'ai fini tout mes projet... Cette demande provient quand même du PDG donc faut pas que je traine!)
Wiska
Messages postés15Date d'inscriptionvendredi 30 mai 2008StatutMembreDernière intervention13 août 2012 22 juil. 2009 à 15:35
bon, j'ai essayé décrire quelque chose qui ressemble à ça:
public void ChargerFichier(String file)
{
try
{
BufferedReader br = new BufferedReader(new FileReader(file));
try
{
String ligne = null;
while ((ligne=br.readLine())!=null )
{
ligne=ligne.trim();
StringTokenizer val = new StringTokenizer(ligne,"|");
while(val.hasMoreTokens())
{
FichierTexte.add(Integer.parseInt(val.nextToken()));
System.out.println(FichierTexte);
}
}
}
finally
{
br.close();
}
}
catch(IOException e)
{
System.out.println((new StringBuilder()).append("Une operation sur les fichiers a leve l'exception ").append(e).toString());
}
A la compile j obtient:
Exception in thread "main" java.lang.NumberFormatException: For input string: "7.3"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:458)
at java.lang.Integer.parseInt(Integer.java:499)
at generationgraphecalcul.CFichierTexte.ChargerFichier(CFichierTexte.java:46)
at generationgraphecalcul.CMain.main(CMain.java:164)
Java Result: 1
Suis-je suis la bonne voie? Quelle est mon erreur à votre avis?
Aidez-moi svp la je commence à désespérer...
Wiska
Messages postés15Date d'inscriptionvendredi 30 mai 2008StatutMembreDernière intervention13 août 2012 22 juil. 2009 à 15:50
bon déjà, je vient de percuter que le traitement que je lance se fait sur des entier et non sur des flottant... A ce moment la comment adapter le traitement à mon cas?
Perso, je suis pas très convaincu par mon traitement.
Je n'ai pas l'impression qu'il stocke 1 par 1 les éléments de la ligne dans l'ArrayList mais 2 par 2...
Quelqu'un pourrait-il le commenter voir me conseiller pour le rendre plus optimisé?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Wiska
Messages postés15Date d'inscriptionvendredi 30 mai 2008StatutMembreDernière intervention13 août 2012 23 juil. 2009 à 11:57
C bon j'ai fini par trouver... seul...
Hormis l'aiguillage de damino, merci d'avoir participé à mon long monologue....
Voici le code pour ceux que sa intéresse...
-première classe:
public ArrayList FichierTexte;
public int TailleArrayList;
(...)
public void ChargerFichier(String file)
{
try
{
BufferedReader br = new BufferedReader(new FileReader(file));
try
{
String ligne = null;
String buf = null;
System.out.println("Taille ArrayList = "+TailleArrayList);
while ((ligne=br.readLine())!=null )
{
ligne=ligne.trim();
StringTokenizer val = new StringTokenizer(ligne,"|");
while(val.hasMoreTokens())
{
buf = val.nextToken();
FichierTexte.add(Float.parseFloat(buf));
System.out.println("ligne Texte en traitement : "+ligne);
TailleArrayList++;
System.out.println("Taille ArrayList = "+TailleArrayList);
}
}
}
finally
{
br.close();
}
}
// ad3 = new float[20];
//ad4 = new float[20];
ad3 = new ArrayList();
ad4 = new ArrayList();
CFichierTexte file = new CFichierTexte();
file.ChargerFichier("C:\\Documents and Settings\\phtorka\\Bureau\\GenerationGrapheCalcul\\GenerationGrapheCalcul\\Graphe.txt");
for (int i=0; i<file.FichierTexte.size();i+=2)
{
System.out.println("Contenu FichierTexte = "+file.FichierTexte.get(i)+"\n");
ad3.add(file.FichierTexte.get(i));
}
for (int x=0; x<ad3.size();x++)
System.out.println("Contenu ad3 = "+ad3.get(x)+"\n");
for (int j=1; j<file.FichierTexte.size();j+=2)
{
System.out.println("Contenu FichierTexte = "+file.FichierTexte.get(j)+"\n");
ad4.add(file.FichierTexte.get(j));
}
for (int y=0; y<ad4.size();y++)
System.out.println("Contenu ad4 = "+ad4.get(y)+"\n");
}
résultat compile:
Taille ArrayList = 0
ligne Texte en traitement : 7.1|-1.2
Taille ArrayList = 1
ligne Texte en traitement : 7.1|-1.2
Taille ArrayList = 2
ligne Texte en traitement : 10.0|-2.0
Taille ArrayList = 3
ligne Texte en traitement : 10.0|-2.0
Taille ArrayList = 4
ligne Texte en traitement : 10.0|-1.5
Taille ArrayList = 5
ligne Texte en traitement : 10.0|-1.5
Taille ArrayList = 6
ligne Texte en traitement : -5.0|-3.0
Taille ArrayList = 7
ligne Texte en traitement : -5.0|-3.0
Taille ArrayList = 8
ligne Texte en traitement : 2.5|-2.5
Taille ArrayList = 9
ligne Texte en traitement : 2.5|-2.5
Taille ArrayList = 10
ligne Texte en traitement : 15.0|-5.0
Taille ArrayList = 11
ligne Texte en traitement : 15.0|-5.0
Taille ArrayList = 12