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)
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...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Partager