Problèmes d'écriture dans un fichier : fichier vide - Java - Programmation
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 ?
Marsh Posté le 19-01-2006 à 00:00:44
Bonjour,
pourquoi n'essayes-tu pas simplement avec un File plutot que RandomAccessFile ?
Code :
|
et puis ya plus qu'à faire un
Code :
|
pour rajouter une ligne
Marsh Posté le 19-01-2006 à 00:35:49
et un flush.
et gerer ses exceptions correctement.
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]
Marsh Posté le 19-01-2006 à 09:56:59
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 :
|
Marsh Posté le 19-01-2006 à 10:14:01
emie31 a écrit : Désolée, mon code n'est toujours pas entre balises. |
Bah poste le code de cette méthode parce que ton RandomAccessFile là
Et ton constructeur il sert à quoi au juste ?
Marsh Posté le 19-01-2006 à 10:18:31
mhh, tjs rien à voir, mais je comprends pas trop ton constructeur...
Code :
|
tu initialises les attributs ml et svc, ca on est d'accord, mais avec quelles valeurs ? celles de ml et svc 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...
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 |
Marsh Posté le 19-01-2006 à 11:44:17
emie31 a écrit : |
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)
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 ?
Marsh Posté le 19-01-2006 à 19:06:05
je pense que oui, vu que le fichier est bien créé
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();
}
}