Detecter la modification d'un fichier - Java - Programmation
Marsh Posté le 03-11-2003 à 14:51:40
non.
la seule possibilité c'est de faire un thread qui va regarder un coup de temps en temps la date de dernière modification du fichier, et générer un évenement dans ce cas. Là tu pourras mettre en place le design pattern observé/observable.
Marsh Posté le 03-11-2003 à 15:02:25
chrisbk a écrit : je proposerais bien un appel au API mais bon |
pkoi t'utilises le mot "API" comme ca ? quels API ?
Marsh Posté le 03-11-2003 à 15:04:46
benou a écrit : |
je dis ca pour les "Win32 API" (raccourcis entrainant des confusions j'imagine), elles disposent de fonctions bloquant un thread jusqu'a une modif sur fichiers/rep/etc....
Marsh Posté le 03-11-2003 à 15:06:34
chrisbk a écrit : |
ouais, c'est une façon de résoudre le problème mais ca fait faire du natif ...
Marsh Posté le 03-11-2003 à 15:08:17
benou a écrit : |
vivi, d'ou mon
Maintenant, ca depend ensuite des besoins du gars, si il peut se permettre du natif ou non (meme si dans l'absolu j'imagine bien qu'on evite ce genre de bricole)
Marsh Posté le 03-11-2003 à 17:11:39
je pense que le probleme est posé de facon un peu vague.
pourrait tu preciser?
Marsh Posté le 03-11-2003 à 18:29:22
veryfree a écrit : je pense que le probleme est posé de facon un peu vague. |
Bien sur,
Je dois concevoir un jeu en reseau. Ce jeu doit communiquer uniquement par fichier. C'est une contrainte meme si c'est loin d'etre le moyen le plus efficace. Je precise que c'est pour un cours sur les systemes distribues
J'utilise une architecture client/serveur
C'est un jeu de strategie. Mais le but du jeu importe peu.
Le serveur possede un fichier.
Les clients possedent egalement un fichier sur lequel ils ecrivent les mouvements qu'ils font.
Le serveur doit lire les fichiers des clients, en detecter les modifications et ensuite mettre a jour son propre fichier avec ces modifications.
Pour etre au courant de l'etat de la partie, chaque client vont lire le fichier du serveur et vont ensuite detecter les nouvelles modifications pour mettre a jour la partie
Donc j'ai besoin de coder ce mecanisme de mise a jour de fichier
Marsh Posté le 03-11-2003 à 18:37:00
ola, c chaud, il faut géré la synchronization des acces aussi, ca va se ressentir dans les performances ca!
avec des sockets ca aurait été si simple
Marsh Posté le 03-11-2003 à 18:43:55
ce serait quand même plus simple avec des sockets ...
mais bon, j'imagine que t'as pas le choix...
Dans ce cas, il faudra surement que tu mettes en place un Thread qui testeras toutes les x millisecondes si le fichier a été modifié et préviendra ton appli si c'est le cas.
Marsh Posté le 03-11-2003 à 18:46:14
benou a écrit : ce serait quand même plus simple avec des sockets ... |
Je suis un peu rouille avec les sockets. Tu peux pas me donner un petit bout de code la dessus ?
Thx
Marsh Posté le 03-11-2003 à 18:47:33
molton a écrit : |
non, j'en ai pas sous la main, mais un petit coup de google (tutorial java socket) te donneras tout ce que tu veux
Marsh Posté le 03-11-2003 à 18:54:14
benou a écrit : |
Pardons, je voulais dire avec les threads. Je suppose que c'est la meme manip ?
Marsh Posté le 03-11-2003 à 18:57:04
salut,
il ne serai pas mieux que tu attaches un compteur de modification pour chacun des fichiers ?
A chaque modif le client ou le serveur incremente son compteur. Ainsi, sur eg un echange S/C, le serveur demande au client son fichier avec en plus le dernier num. de modif. qu'il connait du client ; si le num mod. du client a evolue, il passe le nouveau num + fichier au serveur, sinon rien (ou un simple OK).
Idem dans le sens C/S.
Tu pourrais ensuite broder sur des classes de modifs et non + un simple compteur mais un ensemble de compteurs.
C'est sans doute assez dans l'esprit d'un exo systemes distribues.
Sinon, voir du cote des horloges logiques (Lamport, Fidge & co).
Marsh Posté le 03-11-2003 à 14:48:08
Bonjour,
Je souhaite un mecanisme qui me permettre de savoir lorsqu'un fichier a ete modifier.
Est-ce que l'interface Observable peut faire l'affaire ?
Si oui comment ?
Cedric