Problèmes d'écriture dans un fichier : fichier vide

Problèmes d'écriture dans un fichier : fichier vide - Java - Programmation

Marsh Posté le 18-01-2006 à 15:27:25    

Bonjour,  
 
J aimerai créer un fichier "resultats", dans lequel j ajoute à chaque fois une ligne. J arrive à le créer mais il est vide.  
Pouvez-vous me dire ce qui ne va pas dans mon code ?  
 
Merci d avance pour votre aide.  
 
Emie  
 
Voici mon code :  
 
import java.io.RandomAccessFile;  
 
public class GenerateExperiences {  
 
Liste ml;  
static Sim svc;  
 
public GenerateExperiences() {  
this.ml = ml;  
this.svc = svc;  
createFiles();  
}  
 
public void createFiles() {  
 
RandomAccessFile f;  
 
int[] pop = { 10, 100 };  
float[] prob = { 0.01F, 0.02F };  
float[] level = { 0.1F, 0.2F };  
 
try {  
f=new RandomAccessFile(\\\"resultats.txt\\\",\\\"rw\\\" );  
f.seek(f.length());  
for (int j = 0; j < pop.length; j++) {  
for (int k = 0; k < prob.length; k++) {  
for (int l = 0; l < level.length; l++) {  
svc = new Sim(pop[j],prob[k],level[l]);  
String s = \\\"popInit\\\"+popInit[j]+\\\"\\\\t\\\"+\\\"probaRep\\\"+probaRep[k]+\\\"\\\\t\\\"+\\\"levelSalience\\\"  
+levelSalience[l]+\\\"\\\\t\\\"+\\\"nbMess\\\"+ml.getMessages().size()+\\\"\\\\t\\\"+\\\"nbMessInit\\\"+ml.getNbMessage(0)
+\\\"\\\\t\\\"+\\\"nbMessRep\\\"+ml.getNbMessage(1)+\\\"\\\\n\\\";  
f.setLength(f.length() + s.length());  
f.writeBytes (s);  
}  
}  
}  
f.close();  
}  
 
catch (Exception e) {  
System.err.println(\\\"error \\\"+e.getMessage());  
}  
}  
 
public static void main(String[] args){  
GenerateExperiences genExpe = new GenerateExperiences();  
}  
}

Reply

Marsh Posté le 18-01-2006 à 15:27:25   

Reply

Marsh Posté le 18-01-2006 à 19:10:12    

qqes petites choses (même si ca ne répond pas exactement à ta question, cela pourra aider, ou permettre d'avancer):
- place ton code entre 2 balises [code ][/code] ca sera + facile à faire
- indente un petit peu (notamment l'imbrication des boucles for)
- tu peux utiliser un StringBuffer plutot que d'utiliser la surcharge de l'opérateur + de la classe String
- je ne comprend pas l'intérêt de tous ces \\ ou \", tu peux nous en dire + ?
- tu as essayé de faire une écriture simple dans ton fichier ?


Message édité par trevor le 18-01-2006 à 19:11:09

---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
Reply

Marsh Posté le 19-01-2006 à 00:00:44    

Bonjour,
pourquoi n'essayes-tu pas simplement avec un File plutot que RandomAccessFile ?
 

Code :
  1. PrintStream log = null;
  2. String logFile = "/MonFichier.txt";
  3. try {
  4.   log = new PrintStream(new FileOutputStream(new File(logFile)));
  5. }
  6. catch (Exception ex) {
  7.   log = System.out;
  8. }


 
et puis ya plus qu'à faire un  

Code :
  1. log.println("montexte" );


pour rajouter une ligne


---------------
Voir les RAW sous Android: https://market.android.com/details? [...] .RawVision Blog Photo: http://photouch.me Applications mobiles: http://caketuzz.com Wapcam Project: http://wapcam.mobi
Reply

Marsh Posté le 19-01-2006 à 00:35:49    

et un flush.
et gerer ses exceptions correctement.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 19-01-2006 à 09:42:19    

Voici de nouveau mon code, entre les balises, et un peu nettoyé. Qu'en pensez-vous ? Merci.
Sinon, qu'entends-tu par "écriture simple dans ton fichier" ?
Je vais aussi essayer la proposition de wapcamer.
 
[code ]
import java.io.RandomAccessFile;  
 
public class GenerateExperiences {  
 
Liste ml;  
static Sim svc;  
 
public GenerateExperiences() {  
this.ml = ml;  
this.svc = svc;  
createFiles();  
}  
 
public void createFiles() {  
 
RandomAccessFile f;  
 
int[] pop = { 10, 100 };  
float[] prob = { 0.01F, 0.02F };  
float[] level = { 0.1F, 0.2F };  
 
try {  
f=new RandomAccessFile("resultats.txt","rw" );  
f.seek(f.length());  
for (int j = 0; j < pop.length; j++) {  
 for (int k = 0; k < prob.length; k++) {  
  for (int l = 0; l < level.length; l++) {  
   svc = new Sim(pop[j],prob[k],level[l]);  
String s = "popInit"+popInit[j]+"\t"+"probaRep"+probaRep[k]+"\t"+"levelSalience"  
+levelSalience[l]+"\t"+"nbMess"+ml.getMessages().size()+"\t"+"nbMessInit"+ml.getNbMessage(0)  
+"\t"+"nbMessRep"+ml.getNbMessage(1)+"\n";  
f.setLength(f.length() + s.length());  
f.writeBytes (s);  
}  
}  
}  
f.close();  
}  
 
catch (Exception e) {  
System.err.println("error"+e.getMessage());  
}  
}  
 
public static void main(String[] args){  
GenerateExperiences genExpe = new GenerateExperiences();  
}  
}
[/code]
 

Reply

Marsh Posté le 19-01-2006 à 09:56:59    

[:skylight]


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 19-01-2006 à 10:07:44    

Désolée, mon code n'est toujours pas entre balises.
Je refais un essai.
Sinon, j'ai essayé avec la méthode de wapcamer, et j'ai le même résultat.
Help !!!!
 

Code :
  1. import java.io.RandomAccessFile; 
  2.  
  3. public class GenerateExperiences { 
  4.  
  5. Liste ml; 
  6. static Sim svc; 
  7.  
  8. public GenerateExperiences() { 
  9. this.ml = ml; 
  10. this.svc = svc; 
  11. createFiles(); 
  12.  
  13. public void createFiles() { 
  14.  
  15. RandomAccessFile f; 
  16.  
  17. int[] pop = { 10, 100 }; 
  18. float[] prob = { 0.01F, 0.02F }; 
  19. float[] level = { 0.1F, 0.2F }; 
  20.  
  21. try
  22. f=new RandomAccessFile("resultats.txt","rw" ); 
  23. f.seek(f.length()); 
  24. for (int j = 0; j < pop.length; j++) { 
  25. for (int k = 0; k < prob.length; k++) { 
  26.   for (int l = 0; l < level.length; l++) { 
  27.    svc = new Sim(pop[j],prob[k],level[l]); 
  28. String s = "popInit"+popInit[j]+"\t"+"probaRep"+probaRep[k]+"\t"+"levelSalience" 
  29. +levelSalience[l]+"\t"+"nbMess"+ml.getMessages().size()+"\t"+"nbMessInit"+ml.getNbMessage(0) 
  30. +"\t"+"nbMessRep"+ml.getNbMessage(1)+"\n"; 
  31. f.setLength(f.length() + s.length()); 
  32. f.writeBytes (s); 
  33. f.close(); 
  34.  
  35. catch (Exception e) { 
  36. System.err.println("error"+e.getMessage()); 
  37.  
  38. public static void main(String[] args){ 
  39. GenerateExperiences genExpe = new GenerateExperiences(); 
  40. }

 

Reply

Marsh Posté le 19-01-2006 à 10:14:01    

emie31 a écrit :

Désolée, mon code n'est toujours pas entre balises.
Je refais un essai.
Sinon, j'ai essayé avec la méthode de wapcamer, et j'ai le même résultat.
Help !!!!


 
Bah poste le code de cette méthode parce que ton RandomAccessFile là :??:
 
Et ton constructeur il sert à quoi au juste ?


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 19-01-2006 à 10:18:31    

mhh, tjs rien à voir, mais je comprends pas trop ton constructeur...

Code :
  1. public GenerateExperiences() { 
  2. this.ml = ml; 
  3. this.svc = svc; 
  4. [...]
  5. }


tu initialises les attributs ml et svc, ca on est d'accord, mais avec quelles valeurs ? celles de ml et svc :D elles-même.
pas très logique, dans le pire des cas, il faut redéclarer ml et svc en local au niveau des paramètres d'entrée
dans le meilleur des cas, tu fais la même chose, mais tu prends la peine de donner un autre nom à ces variables locaux (c'est une très mauvaise habitude d'avoir une variable locale de même nom qu'un attribut)
 
autre chose: d'où proviennent les variables popInit[], probaRep[] et levelSalience[] ? elles ne sont déclarées nul part...


Message édité par trevor le 19-01-2006 à 10:23:26

---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
Reply

Marsh Posté le 19-01-2006 à 10:32:46    

je viens de tester ton code tel quel (c/c) en virant les références inconnus (les attributs, les classes inconnues, les variables inconnues), ca compile, et ca me crée un fichier avec du contenu :

popInit probaRep levelSalience nbMess nbMessInit nbMessRep
[...]



---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
Reply

Marsh Posté le 19-01-2006 à 10:32:46   

Reply

Marsh Posté le 19-01-2006 à 11:44:17    

emie31 a écrit :


Sinon, j'ai essayé avec la méthode de wapcamer, et j'ai le même résultat.


 
Heu perso je l'utilise pour mes fichiers de log dans mon projet et ça marche bien.
Tu es bien sur du contenu à envoyer dans le fichier?
Comme dis R--, tu fais bien un flush de temps en temps ? (ça sert à forcer le vidage du tampon vers le fichier)


---------------
Voir les RAW sous Android: https://market.android.com/details? [...] .RawVision Blog Photo: http://photouch.me Applications mobiles: http://caketuzz.com Wapcam Project: http://wapcam.mobi
Reply

Marsh Posté le 19-01-2006 à 15:27:53    

Petite question bete, tu as bien vérifié que tu as les droits d'écriture sur ton fichier de sortie ?

Reply

Marsh Posté le 19-01-2006 à 19:06:05    

je pense que oui, vu que le fichier est bien créé


---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed