Detecter la modification d'un fichier

Detecter la modification d'un fichier - Java - Programmation

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

Reply

Marsh Posté le 03-11-2003 à 14:48:08   

Reply

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.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 03-11-2003 à 14:52:29    

je proposerais bien un appel au API mais bon [:cupra]

Reply

Marsh Posté le 03-11-2003 à 15:02:25    

chrisbk a écrit :

je proposerais bien un appel au API mais bon [:cupra]


pkoi t'utilises le mot "API" comme ca ? quels API ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 03-11-2003 à 15:04:46    

benou a écrit :


pkoi t'utilises le mot "API" comme ca ? quels API ?


 
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....
 

Reply

Marsh Posté le 03-11-2003 à 15:06:34    

chrisbk a écrit :


 elles disposent de fonctions bloquant un thread jusqu'a une modif sur fichiers/rep/etc....
 


ouais, c'est une façon de résoudre le problème mais ca fait faire du natif ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 03-11-2003 à 15:08:17    

benou a écrit :


ouais, c'est une façon de résoudre le problème mais ca fait faire du natif ...


 
vivi, d'ou mon [:cupra]
Maintenant, ca depend ensuite des besoins du gars, si il peut se permettre du natif ou non [:spamafote] (meme si dans l'absolu j'imagine bien qu'on evite ce genre de bricole)

Reply

Marsh Posté le 03-11-2003 à 17:11:39    

je pense que le probleme est posé de facon un peu vague.
 
pourrait tu preciser?
 

Reply

Marsh Posté le 03-11-2003 à 18:29:22    

veryfree a écrit :

je pense que le probleme est posé de facon un peu vague.
 
pourrait tu preciser?
 
 


 
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

Reply

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 :sweat:

Reply

Marsh Posté le 03-11-2003 à 18:37:00   

Reply

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.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 03-11-2003 à 18:46:14    

benou a écrit :

:/ 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.


 
Je suis un peu rouille avec les sockets. Tu peux pas me donner un petit bout de code la dessus ?
 
Thx

Reply

Marsh Posté le 03-11-2003 à 18:47:33    

molton a écrit :


Je suis un peu rouille avec les sockets. Tu peux pas me donner un petit bout de code la dessus ?


non, j'en ai pas sous la main, mais un petit coup de google (tutorial java socket) te donneras tout ce que tu veux


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 03-11-2003 à 18:54:14    

benou 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  


 
Pardons, je voulais dire avec les threads. Je suppose que c'est la meme manip ?

Reply

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).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed