Bonsoir

Je suis actuellement en train de developper une petite appli ( sous eclispse ), et j'ai bidouiller un petit programme qui me permettra de faire la mise a jour de l'appli, dans le principe, je voudrais avoir un dossier sur le pc ( Document, Bureau ... peut importe ) dans lequel je met mon fichier.java et lorsque l'application est lancer , il verifie s'il ya un fichier dans ce repertoire et le copie pour l'integrer au projet, jusque la mon programme fonctionne a merveille, le probleme vient apres car le projet a le nouveau fichier, ou alors la nouvelle version d'un fichier qui etatit deja present, mais lorsde la compilation, le fichier n'est pas pris en compte, bisarrement sur eclipse je suis obliger d'ouvrir le fichier au moins 1 fois avant de relancer la compilation pour que cela fonctionne, donc du coup je ne peux pas mettre mon appli a jour comme je l'esperait .
Donc j'aimerais savoir si l'un de vous aurait une idee de la raison de ce comportement

PS: mon code pour la mise a jour si besoin

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
 
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
 
public class VerificationMAJ {
 
	public static File majAppli = new File(
			"C:/Users/user/Documents/Otaku No Shinbun/MAJ");
	public static File dossier = new File("src");
	static int ref = 0;
 
	public void miseAJour() {
 
		if (majAppli.exists() == false)
			majAppli.mkdirs();
 
		listeRepertoire(majAppli, dossier);
	}
 
	/***************
         * Appel de la fonction avec les 2 repertoires sur lesquels on va travailler
         *******************/
	private static void listeRepertoire(File rep1, File rep2) {
 
		if (rep1.isDirectory()) {
 
			File[] list = rep1.listFiles(); // on liste liste les fichiers du
											// repertoire
			File[] list2 = rep2.listFiles();
 
			if (list != null && list.length != 0) { // test si le repertoire est
													// vide
 
				for (int i = 0; i < list.length; i++) {
 
					if (recherche(list[i], list2)) { // recupération du retour
														// de la fonction
														// recherche
 
						for (int j = 0; j < list2.length; j++) {
 
							/****
                                                         * test si le nom du fichier dans le dossier 1
                                                         * correspond à un nom de fichier dans le dossier 2
                                                         ****/
							if (list[i].getName().equals(list2[j].getName())) {
								/*
								 * Correspondance des fichiers positive
								 * 
								 * System.out.println(list[i].getName() + " = "
								 * + list2[j].getName());
								 */
								comparaison(list[i], list2[j]);
								switch (ref) {
								case 1:
									File fichCop = new File("src/"
											+ list[i].getName());
									list2[j].delete(); // suppression du dichier
									if (copyFile(list[i], fichCop)) {
										/*Copie effectuer
										 * 
										 * System.out.println("copie de " +
										 * list[i].getName() + " effectuer");
										 */
									} else {
										/* Copie echouer
										 * System.out.println("copie de " +
										 * list[i].getName() + " echouer");
										 */
									}
									list[i].delete();
									break;
								case 2:
									/*Suppression du fichier copier dans le dossier MAJ
									 * 
									 * System.out.println("fichier a supprimer : "
									 * + list[i]);
									 */
									list[i].delete();
									break;
								case 3:
									/*
									 * System.out.println("fichier a supprimer : "
									 * + list[i]);
									 */
									list[i].delete();
									break;
 
								default:
									break;
								}
							} else {
								/* fichier non correspondant */
							}
						}
 
					} else {
						/* le fichier n'es pas compris dans le tableau */
						File fichCop = new File("src/" + list[i].getName());
 
						if (copyFile(list[i], fichCop)) {
							/*
							 * copie du fichier effectuer avec succes 
							 * 
							 * System.out.println("copie de " +
							 * list[i].getName()+ " effectuer");
							 */
						} else {
							/*Copie du fichier
							 *
							 * System.out.println("copie de " + list[i] +
							 * " vers " + fichCop);
							 */
						}
						list[i].delete();
						new Main();
					}
 
				}
			} else if (list.length == 0) { // si le fichier est vide ...
				// Dossier vide 
			} else { // en cas d'erreur
				/* Erreur de lecture 
				 *  System.err.println(rep1 + " : Erreur de lecture."); */
				new VerificationMAJ();
			}
 
			/***************
                         * Appel récursif sur les sous-répertoires *********** if (list !=
                         * null) { for (int i = 0; i < list.length; i++) {
                         * 
                         * listeRepertoire(list[i]); } } else {
                         * System.err.println(repertoire + " : Erreur de lecture."); }
                         */
		}
	}
 
	/*
	 * methode renvoyant vrai si le fichier passer enparametre "valeurATrouver"
	 * est dans la table "T" *****
	 */
	private static boolean recherche(File valeurATrouver, File[] T) {
		for (int i = 0; i < T.length; i++) {
			if (T[i].getName().equals(valeurATrouver.getName())) {
				return true;
			}
		}
		return false;
	}
 
	/***
         * Comparaison entre les 2 fichiers pour savoir lequel a la date de
         * modification la plus récente
         ***/
	private static void comparaison(File rep1, File rep2) {
		long dateMod1 = rep1.lastModified();
		long dateMod2 = rep2.lastModified();
 
		if (dateMod1 > dateMod2) {
			// System.out.println(rep1 + " : MAJ est plus récent ");
			ref = 1;
 
		} else if (dateMod1 < dateMod2) {
			// System.out.println(rep2 + " est plus récent ");
			ref = 2;
		} else if (dateMod1 == dateMod2) {
			// System.out.println(" Modifiés le meme jour ");
			ref = 3;
		}
 
	}
 
	/**
         * copie le fichier source dans le fichier destination, retourne vrai si
         * cela réussit
         */
	private static boolean copyFile(File source, File dest) {
		try {
			// Declaration et ouverture des flux
			java.io.FileInputStream sourceFile = new java.io.FileInputStream(
					source);
 
			try {
				java.io.FileOutputStream destinationFile = null;
 
				try {
					destinationFile = new FileOutputStream(dest);
 
					// Lecture par segment de 0.5Mo
					byte buffer[] = new byte[512 * 1024];
					int nbLecture;
 
					while ((nbLecture = sourceFile.read(buffer)) != -1) {
						destinationFile.write(buffer, 0, nbLecture);
					}
				} finally {
					destinationFile.close();
				}
			} finally {
				sourceFile.close();
			}
		} catch (IOException e) {
			e.printStackTrace();
			return false; // Erreur
		}
 
		return true; // Résultat OK
	}
 
}
Merci d'avance pour l'aide et les suggestion qui seront apporter