Echec suppression d'un fichier
Bonjour,
tout d'abord, il me faut dire que le code suivant ne se lance pas depuis la machine sur lequel il travaille (d'où la présence de l'ip).
Je vous explique ce que fais le code.
Il va chercher un fichier sur le serveur.
Il le recopie en modifiant une ligne.
Cette partie est OK.
Par la suite, je voudrais effacer l'ancienne version du fichier.
Sauf que delete me renvoie false à ce moment là; et il me semble bien avoir fermé toutes les entrées, ce que ce soit en lecture et écriture.
Par la suite, je veux simplement renommer le nouveaux fichier comme l'ancien (ce qui marche je pense mais échoue pour le moment comme le fichier n'est pas supprimé).
Voici le code: (en vert la partie fonctionnelle; et en rouge ce qui pose problème)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
//Return the old UU
public String modifGrfiti(String ip,Settings set,FTextArea test){
String pathGrfiti="\\\\"+ip+"\\\\"+set.getpathGrfiti();
String newPath="\\\\"+ip+"\\\\"+set.getrepGrfiti()+"\\GrfItiServerV2bis.xml";
String UU="notFound";
File grfiti=new File(pathGrfiti);
if(grfiti.exists()){
BufferedReader lecteurAvecBuffer = null;
String line;
try{
lecteurAvecBuffer = new BufferedReader(new FileReader(grfiti.getPath()));
//create the newFile
BufferedWriter writer = new BufferedWriter(new FileWriter(new File(newPath)));
//open writting file mode
FileWriter fw= new FileWriter(newPath,true);
while ((line = lecteurAvecBuffer.readLine()) != null){
//Read the file line by line
if(line.contains("<GraphTC>")){
String newLine="<GraphTC>"+set.getdestGraph()+"\\geocati_"+this.getNumUU()+"</GraphTC>\n";
fw.write(newLine);
UU=line.substring(line.lastIndexOf("_")+1,line.lastIndexOf("_")+6);
}else{
fw.write(line+"\n");
}
}
lecteurAvecBuffer.close();
fw.close();
writer.close();
//V2vis is the new File so delete old one
if(grfiti.delete()){
System.out.println("Ancien Grfiti supprimé OK\n");
test.addext("Ancien Grfiti supprimé OK\n");
}else{
System.out.println("Echec suppression ancien Grfiti");
test.addext("Echec suppression ancien Grfiti\n");
}
//V2 is destroyed; now change V2bis into V2
String com= "ren "+newPath+ " GrfItiServerV2.xml";
Launch testCom=new Launch(com,test);
//back the new Grfiti
testCom.exe();
}catch (IOException e ) {
// TODO Auto-generated catch block
System.out.println("Echec de traitement du fichier\n");
e.printStackTrace();
}
}else{
System.out.println("Le fichier "+pathGrfiti+" n'existe pas !");
test.addext("Le fichier "+pathGrfiti+" n'as pas été trouvé !");
}
return UU;
} |
Il y a bien un fichier ouvert localement en écriture pendant que cette fonction travaille, mais normalement ça ne devrait pas poser de problèmes...