j'ai cherché dans l'api java et dans les messages du forum, mais je n'ai pas
trouvé.
Y a t'il un moyen de détecter la modification du contenu d'un fichier par
une autre application ?
En fait, j'ai un programme qui tourne sur ma machine (je n'ai pas les
sources) et qui met à jour le contenu d'un fichier. Je veux faire un autre
programme qui, entre autres, affiche le contenu du fichier et qui met à jour
l'affichage à chaque modification du fichier.
Le Sun, 13 Jun 2004 17:44:53 +0200, Nicolas Vervelle a écrit :
C'est une façon de faire mais j'aurais préféré pouvoir faire de l'evenementiel. Je risque d'avoir un certain nombre de fichiers à surveiller (une centaine) sur des machines différentes donc avec accès réseau. Je ferais un essai.
N'oublions pas que Java s'appuie sur le systeme de fichier de l'OS. Si ce systeme de fichier n'est pas évenementiel comment java pourrait le remplacer ?
Le Sun, 13 Jun 2004 17:44:53 +0200, Nicolas Vervelle a écrit :
C'est une façon de faire mais j'aurais préféré pouvoir faire de
l'evenementiel.
Je risque d'avoir un certain nombre de fichiers à surveiller (une centaine)
sur des machines différentes donc avec accès réseau.
Je ferais un essai.
N'oublions pas que Java s'appuie sur le systeme de fichier de l'OS.
Si ce systeme de fichier n'est pas évenementiel comment java pourrait le
remplacer ?
Le Sun, 13 Jun 2004 17:44:53 +0200, Nicolas Vervelle a écrit :
C'est une façon de faire mais j'aurais préféré pouvoir faire de l'evenementiel. Je risque d'avoir un certain nombre de fichiers à surveiller (une centaine) sur des machines différentes donc avec accès réseau. Je ferais un essai.
N'oublions pas que Java s'appuie sur le systeme de fichier de l'OS. Si ce systeme de fichier n'est pas évenementiel comment java pourrait le remplacer ?
Bruno Tignac
Nicolas Vervelle wrote:
Salut,
Oui, cela peut etre fait.
Il n'y a pas effectivement de "systeme evenementiel" dans l'API pour detecter la modification, mais c'est tres simple a faire :
tu ecris un thread qui toutes les N millisecondes va verifier l'etat de ton fichier en utilisant lastModified() de File. Si le long que tu obtiens est different de celui que tu as obtenu le coup d'avant c'est que le fichier a ete modifie.
Exemple de classe de verif :
import java.io.File;
public class Test implements Runnable { private File coFile;
public Test (File poFile) { coFile = poFile; } public void run() { long llLastModified= 0; try { llLastModified = coFile.lastModified(); }catch(Exception loEx){ } while (true) { try { // on dort une minute Thread.sleep(1000*60); // on verifie la date long llNewModified = coFile.lastModified(); if (llNewModified > llLastModified){ //appeler le traitement qu'il faut llLastModified = coFile.lastModified(); } } catch(Exception loEx) { loEx.printStackTrace(); } } } }
Voila a peu pres l'idee.
Bruno
Bonjour,
j'ai cherché dans l'api java et dans les messages du forum, mais je n'ai pas trouvé. Y a t'il un moyen de détecter la modification du contenu d'un fichier par une autre application ?
En fait, j'ai un programme qui tourne sur ma machine (je n'ai pas les sources) et qui met à jour le contenu d'un fichier. Je veux faire un autre programme qui, entre autres, affiche le contenu du fichier et qui met à jour l'affichage à chaque modification du fichier.
Merci Nicolas
Nicolas Vervelle wrote:
Salut,
Oui, cela peut etre fait.
Il n'y a pas effectivement de "systeme evenementiel" dans l'API pour
detecter la modification, mais c'est tres simple a faire :
tu ecris un thread qui toutes les N millisecondes va verifier l'etat de ton
fichier en utilisant lastModified() de File. Si le long que tu obtiens est
different de celui que tu as obtenu le coup d'avant c'est que le fichier
a ete modifie.
Exemple de classe de verif :
import java.io.File;
public class Test implements Runnable {
private File coFile;
public Test (File poFile) {
coFile = poFile;
}
public void run() {
long llLastModified= 0;
try {
llLastModified = coFile.lastModified();
}catch(Exception loEx){
}
while (true) {
try {
// on dort une minute
Thread.sleep(1000*60);
// on verifie la date
long llNewModified = coFile.lastModified();
if (llNewModified > llLastModified){
//appeler le traitement qu'il faut
llLastModified = coFile.lastModified();
}
} catch(Exception loEx) {
loEx.printStackTrace();
}
}
}
}
Voila a peu pres l'idee.
Bruno
Bonjour,
j'ai cherché dans l'api java et dans les messages du forum, mais je n'ai
pas trouvé.
Y a t'il un moyen de détecter la modification du contenu d'un fichier par
une autre application ?
En fait, j'ai un programme qui tourne sur ma machine (je n'ai pas les
sources) et qui met à jour le contenu d'un fichier. Je veux faire un autre
programme qui, entre autres, affiche le contenu du fichier et qui met à
jour l'affichage à chaque modification du fichier.
Il n'y a pas effectivement de "systeme evenementiel" dans l'API pour detecter la modification, mais c'est tres simple a faire :
tu ecris un thread qui toutes les N millisecondes va verifier l'etat de ton fichier en utilisant lastModified() de File. Si le long que tu obtiens est different de celui que tu as obtenu le coup d'avant c'est que le fichier a ete modifie.
Exemple de classe de verif :
import java.io.File;
public class Test implements Runnable { private File coFile;
public Test (File poFile) { coFile = poFile; } public void run() { long llLastModified= 0; try { llLastModified = coFile.lastModified(); }catch(Exception loEx){ } while (true) { try { // on dort une minute Thread.sleep(1000*60); // on verifie la date long llNewModified = coFile.lastModified(); if (llNewModified > llLastModified){ //appeler le traitement qu'il faut llLastModified = coFile.lastModified(); } } catch(Exception loEx) { loEx.printStackTrace(); } } } }
Voila a peu pres l'idee.
Bruno
Bonjour,
j'ai cherché dans l'api java et dans les messages du forum, mais je n'ai pas trouvé. Y a t'il un moyen de détecter la modification du contenu d'un fichier par une autre application ?
En fait, j'ai un programme qui tourne sur ma machine (je n'ai pas les sources) et qui met à jour le contenu d'un fichier. Je veux faire un autre programme qui, entre autres, affiche le contenu du fichier et qui met à jour l'affichage à chaque modification du fichier.
Merci Nicolas
Nicolas Vervelle
C'est une façon de faire mais j'aurais préféré pouvoir faire de l'evenementiel. Je risque d'avoir un certain nombre de fichiers à surveiller (une centaine) sur des machines différentes donc avec accès réseau. Je ferais un essai.
Merci
"Bruno Tignac" a écrit
Il n'y a pas effectivement de "systeme evenementiel" dans l'API pour detecter la modification, mais c'est tres simple a faire :
tu ecris un thread qui toutes les N millisecondes va verifier l'etat de ton
fichier en utilisant lastModified() de File. Si le long que tu obtiens est different de celui que tu as obtenu le coup d'avant c'est que le fichier a ete modifie.
Y a t'il un moyen de détecter la modification du contenu d'un fichier par
une autre application ?
C'est une façon de faire mais j'aurais préféré pouvoir faire de
l'evenementiel.
Je risque d'avoir un certain nombre de fichiers à surveiller (une centaine)
sur des machines différentes donc avec accès réseau.
Je ferais un essai.
Merci
"Bruno Tignac" a écrit
Il n'y a pas effectivement de "systeme evenementiel" dans l'API pour
detecter la modification, mais c'est tres simple a faire :
tu ecris un thread qui toutes les N millisecondes va verifier l'etat de
ton
fichier en utilisant lastModified() de File. Si le long que tu obtiens est
different de celui que tu as obtenu le coup d'avant c'est que le fichier
a ete modifie.
Y a t'il un moyen de détecter la modification du contenu d'un fichier
par
C'est une façon de faire mais j'aurais préféré pouvoir faire de l'evenementiel. Je risque d'avoir un certain nombre de fichiers à surveiller (une centaine) sur des machines différentes donc avec accès réseau. Je ferais un essai.
Merci
"Bruno Tignac" a écrit
Il n'y a pas effectivement de "systeme evenementiel" dans l'API pour detecter la modification, mais c'est tres simple a faire :
tu ecris un thread qui toutes les N millisecondes va verifier l'etat de ton
fichier en utilisant lastModified() de File. Si le long que tu obtiens est different de celui que tu as obtenu le coup d'avant c'est que le fichier a ete modifie.
Y a t'il un moyen de détecter la modification du contenu d'un fichier par
une autre application ?
Nicolas Vervelle
"Unknown" a écrit dans le message de news:
C'est une façon de faire mais j'aurais préféré pouvoir faire de l'evenementiel. Je risque d'avoir un certain nombre de fichiers à surveiller (une centaine)
sur des machines différentes donc avec accès réseau. Je ferais un essai.
N'oublions pas que Java s'appuie sur le systeme de fichier de l'OS. Si ce systeme de fichier n'est pas évenementiel comment java pourrait le remplacer ?
Dans Windows, il y a les fonctions FindFirstChangeNotification() et consort qui permettent de faire çà. Pour les autres OS, je ne sais pas.
"Unknown" <Unknown@devnull.null> a écrit dans le message de
news:pan.2004.06.13.12.13.29.313443@devnull.null...
C'est une façon de faire mais j'aurais préféré pouvoir faire de
l'evenementiel.
Je risque d'avoir un certain nombre de fichiers à surveiller (une
centaine)
sur des machines différentes donc avec accès réseau.
Je ferais un essai.
N'oublions pas que Java s'appuie sur le systeme de fichier de l'OS.
Si ce systeme de fichier n'est pas évenementiel comment java pourrait le
remplacer ?
Dans Windows, il y a les fonctions FindFirstChangeNotification() et consort
qui permettent de faire çà.
Pour les autres OS, je ne sais pas.
C'est une façon de faire mais j'aurais préféré pouvoir faire de l'evenementiel. Je risque d'avoir un certain nombre de fichiers à surveiller (une centaine)
sur des machines différentes donc avec accès réseau. Je ferais un essai.
N'oublions pas que Java s'appuie sur le systeme de fichier de l'OS. Si ce systeme de fichier n'est pas évenementiel comment java pourrait le remplacer ?
Dans Windows, il y a les fonctions FindFirstChangeNotification() et consort qui permettent de faire çà. Pour les autres OS, je ne sais pas.
Patrick Godeau
Nicolas Vervelle a écrit:
C'est une façon de faire mais j'aurais préféré pouvoir faire de l'evenementiel. Je risque d'avoir un certain nombre de fichiers à surveiller (une centaine)
S'ils sont dans un même répertoire, ce sera + efficace de tester l'état du répertoire lui-même.
Nicolas Vervelle a écrit:
C'est une façon de faire mais j'aurais préféré pouvoir faire de
l'evenementiel.
Je risque d'avoir un certain nombre de fichiers à surveiller (une centaine)
S'ils sont dans un même répertoire, ce sera + efficace de tester l'état
du répertoire lui-même.
C'est une façon de faire mais j'aurais préféré pouvoir faire de l'evenementiel. Je risque d'avoir un certain nombre de fichiers à surveiller (une centaine)
S'ils sont dans un même répertoire, ce sera + efficace de tester l'état du répertoire lui-même.
Vincent Lascaux
N'oublions pas que Java s'appuie sur le systeme de fichier de l'OS. Si ce systeme de fichier n'est pas évenementiel comment java pourrait le remplacer ?
Voyons voir... peut être créer un thread et tester toutes les N millisecondes si l'etat du fichier a changé ? ;-)
-- Vincent
N'oublions pas que Java s'appuie sur le systeme de fichier de l'OS.
Si ce systeme de fichier n'est pas évenementiel comment java pourrait le
remplacer ?
Voyons voir... peut être créer un thread et tester toutes les N
millisecondes si l'etat du fichier a changé ? ;-)
N'oublions pas que Java s'appuie sur le systeme de fichier de l'OS. Si ce systeme de fichier n'est pas évenementiel comment java pourrait le remplacer ?
Voyons voir... peut être créer un thread et tester toutes les N millisecondes si l'etat du fichier a changé ? ;-)
-- Vincent
jocelyn
Salut,
Je ne connais pas l'API windows, mais si cette methode existe, peut-etre peux-tu envisager de passer par JNI ?
-- Celui qui lutte contre des monstres doit prendre garde, dans le combat, à ne pas devenir un monstre lui-même
Dans Windows, il y a les fonctions FindFirstChangeNotification() et consort
qui permettent de faire çà. Pour les autres OS, je ne sais pas.
Salut,
Je ne connais pas l'API windows, mais si cette methode existe, peut-etre
peux-tu envisager
de passer par JNI ?
--
Celui qui lutte contre des monstres doit prendre garde, dans le combat, à ne
pas devenir un monstre lui-même
Dans Windows, il y a les fonctions FindFirstChangeNotification() et
consort
qui permettent de faire çà.
Pour les autres OS, je ne sais pas.
Je ne connais pas l'API windows, mais si cette methode existe, peut-etre peux-tu envisager de passer par JNI ?
-- Celui qui lutte contre des monstres doit prendre garde, dans le combat, à ne pas devenir un monstre lui-même
Dans Windows, il y a les fonctions FindFirstChangeNotification() et consort
qui permettent de faire çà. Pour les autres OS, je ne sais pas.
christophe
Nicolas Vervelle wrote:
Salut,
Oui, cela peut etre fait.
Il n'y a pas effectivement de "systeme evenementiel" dans l'API pour detecter la modification, mais c'est tres simple a faire :
tu ecris un thread qui toutes les N millisecondes va verifier l'etat de ton fichier en utilisant lastModified() de File. Si le long que tu obtiens est different de celui que tu as obtenu le coup d'avant c'est que le fichier a ete modifie.
Exemple de classe de verif :
import java.io.File;
public class Test implements Runnable { private File coFile;
public Test (File poFile) { coFile = poFile; } public void run() { long llLastModified= 0; try { llLastModified = coFile.lastModified(); }catch(Exception loEx){ } while (true) { try { // on dort une minute Thread.sleep(1000*60); // on verifie la date long llNewModified = coFile.lastModified(); if (llNewModified > llLastModified){ //appeler le traitement qu'il faut llLastModified = coFile.lastModified(); } } catch(Exception loEx) { loEx.printStackTrace(); } } } }
Voila a peu pres l'idee.
Bruno
juste une question: en faisant une boucle infinie, est ce qu'on ne monopolyse pas le cpu? si oui, est ce que le thread.sleep la relache?
Nicolas Vervelle wrote:
Salut,
Oui, cela peut etre fait.
Il n'y a pas effectivement de "systeme evenementiel" dans l'API pour
detecter la modification, mais c'est tres simple a faire :
tu ecris un thread qui toutes les N millisecondes va verifier l'etat de ton
fichier en utilisant lastModified() de File. Si le long que tu obtiens est
different de celui que tu as obtenu le coup d'avant c'est que le fichier
a ete modifie.
Exemple de classe de verif :
import java.io.File;
public class Test implements Runnable {
private File coFile;
public Test (File poFile) {
coFile = poFile;
}
public void run() {
long llLastModified= 0;
try {
llLastModified = coFile.lastModified();
}catch(Exception loEx){
}
while (true) {
try {
// on dort une minute
Thread.sleep(1000*60);
// on verifie la date
long llNewModified = coFile.lastModified();
if (llNewModified > llLastModified){
//appeler le traitement qu'il faut
llLastModified = coFile.lastModified();
}
} catch(Exception loEx) {
loEx.printStackTrace();
}
}
}
}
Voila a peu pres l'idee.
Bruno
juste une question:
en faisant une boucle infinie, est ce qu'on ne monopolyse pas le cpu?
si oui, est ce que le thread.sleep la relache?
Il n'y a pas effectivement de "systeme evenementiel" dans l'API pour detecter la modification, mais c'est tres simple a faire :
tu ecris un thread qui toutes les N millisecondes va verifier l'etat de ton fichier en utilisant lastModified() de File. Si le long que tu obtiens est different de celui que tu as obtenu le coup d'avant c'est que le fichier a ete modifie.
Exemple de classe de verif :
import java.io.File;
public class Test implements Runnable { private File coFile;
public Test (File poFile) { coFile = poFile; } public void run() { long llLastModified= 0; try { llLastModified = coFile.lastModified(); }catch(Exception loEx){ } while (true) { try { // on dort une minute Thread.sleep(1000*60); // on verifie la date long llNewModified = coFile.lastModified(); if (llNewModified > llLastModified){ //appeler le traitement qu'il faut llLastModified = coFile.lastModified(); } } catch(Exception loEx) { loEx.printStackTrace(); } } } }
Voila a peu pres l'idee.
Bruno
juste une question: en faisant une boucle infinie, est ce qu'on ne monopolyse pas le cpu? si oui, est ce que le thread.sleep la relache?
Bruno Tignac
Salut,
Comme l'indique le terme Thread.sleep() relache le thread. En fait, il fait une attente passive. L'ordonnanceur du systeme d'exploitation se chargeant de le reveiller quand il faut.
Le compotement du Thread.sleep est a rapprocher de Object.wait() ou le notify serait remonte par la VM.
Bruno
christophe wrote:
Nicolas Vervelle wrote:
Salut,
Oui, cela peut etre fait.
Il n'y a pas effectivement de "systeme evenementiel" dans l'API pour detecter la modification, mais c'est tres simple a faire :
tu ecris un thread qui toutes les N millisecondes va verifier l'etat de ton fichier en utilisant lastModified() de File. Si le long que tu obtiens est different de celui que tu as obtenu le coup d'avant c'est que le fichier a ete modifie.
Exemple de classe de verif :
import java.io.File;
public class Test implements Runnable { private File coFile;
public Test (File poFile) { coFile = poFile; } public void run() { long llLastModified= 0; try { llLastModified = coFile.lastModified(); }catch(Exception loEx){ } while (true) { try { // on dort une minute Thread.sleep(1000*60); // on verifie la date long llNewModified = coFile.lastModified(); if (llNewModified > llLastModified){ //appeler le traitement qu'il faut llLastModified = coFile.lastModified(); } } catch(Exception loEx) { loEx.printStackTrace(); } } } }
Voila a peu pres l'idee.
Bruno
juste une question: en faisant une boucle infinie, est ce qu'on ne monopolyse pas le cpu? si oui, est ce que le thread.sleep la relache?
Salut,
Comme l'indique le terme Thread.sleep() relache le thread. En fait, il fait
une attente passive. L'ordonnanceur du systeme d'exploitation se chargeant
de le reveiller quand il faut.
Le compotement du Thread.sleep est a rapprocher de Object.wait() ou le
notify serait remonte par la VM.
Bruno
christophe wrote:
Nicolas Vervelle wrote:
Salut,
Oui, cela peut etre fait.
Il n'y a pas effectivement de "systeme evenementiel" dans l'API pour
detecter la modification, mais c'est tres simple a faire :
tu ecris un thread qui toutes les N millisecondes va verifier l'etat de
ton fichier en utilisant lastModified() de File. Si le long que tu
obtiens est different de celui que tu as obtenu le coup d'avant c'est que
le fichier a ete modifie.
Exemple de classe de verif :
import java.io.File;
public class Test implements Runnable {
private File coFile;
public Test (File poFile) {
coFile = poFile;
}
public void run() {
long llLastModified= 0;
try {
llLastModified = coFile.lastModified();
}catch(Exception loEx){
}
while (true) {
try {
// on dort une minute
Thread.sleep(1000*60);
// on verifie la date
long llNewModified = coFile.lastModified();
if (llNewModified > llLastModified){
//appeler le traitement qu'il faut
llLastModified = coFile.lastModified();
}
} catch(Exception loEx) {
loEx.printStackTrace();
}
}
}
}
Voila a peu pres l'idee.
Bruno
juste une question:
en faisant une boucle infinie, est ce qu'on ne monopolyse pas le cpu?
si oui, est ce que le thread.sleep la relache?
Comme l'indique le terme Thread.sleep() relache le thread. En fait, il fait une attente passive. L'ordonnanceur du systeme d'exploitation se chargeant de le reveiller quand il faut.
Le compotement du Thread.sleep est a rapprocher de Object.wait() ou le notify serait remonte par la VM.
Bruno
christophe wrote:
Nicolas Vervelle wrote:
Salut,
Oui, cela peut etre fait.
Il n'y a pas effectivement de "systeme evenementiel" dans l'API pour detecter la modification, mais c'est tres simple a faire :
tu ecris un thread qui toutes les N millisecondes va verifier l'etat de ton fichier en utilisant lastModified() de File. Si le long que tu obtiens est different de celui que tu as obtenu le coup d'avant c'est que le fichier a ete modifie.
Exemple de classe de verif :
import java.io.File;
public class Test implements Runnable { private File coFile;
public Test (File poFile) { coFile = poFile; } public void run() { long llLastModified= 0; try { llLastModified = coFile.lastModified(); }catch(Exception loEx){ } while (true) { try { // on dort une minute Thread.sleep(1000*60); // on verifie la date long llNewModified = coFile.lastModified(); if (llNewModified > llLastModified){ //appeler le traitement qu'il faut llLastModified = coFile.lastModified(); } } catch(Exception loEx) { loEx.printStackTrace(); } } } }
Voila a peu pres l'idee.
Bruno
juste une question: en faisant une boucle infinie, est ce qu'on ne monopolyse pas le cpu? si oui, est ce que le thread.sleep la relache?
Pasturel Jean-Louis
Nicolas Vervelle wrote:
Bonjour,
j'ai cherché dans l'api java et dans les messages du forum, mais je n'ai pas trouvé. Y a t'il un moyen de détecter la modification du contenu d'un fichier par une autre application ?
En fait, j'ai un programme qui tourne sur ma machine (je n'ai pas les sources) et qui met à jour le contenu d'un fichier. Je veux faire un autre programme qui, entre autres, affiche le contenu du fichier et qui met à jour l'affichage à chaque modification du fichier.
Merci Nicolas
Chercher du coté du pattern Observer / Observable en derivant File et en
retroussant les manches ;-)
Nicolas Vervelle wrote:
Bonjour,
j'ai cherché dans l'api java et dans les messages du forum, mais je n'ai pas
trouvé.
Y a t'il un moyen de détecter la modification du contenu d'un fichier par
une autre application ?
En fait, j'ai un programme qui tourne sur ma machine (je n'ai pas les
sources) et qui met à jour le contenu d'un fichier. Je veux faire un autre
programme qui, entre autres, affiche le contenu du fichier et qui met à jour
l'affichage à chaque modification du fichier.
Merci
Nicolas
Chercher du coté du pattern Observer / Observable en derivant File et en
j'ai cherché dans l'api java et dans les messages du forum, mais je n'ai pas trouvé. Y a t'il un moyen de détecter la modification du contenu d'un fichier par une autre application ?
En fait, j'ai un programme qui tourne sur ma machine (je n'ai pas les sources) et qui met à jour le contenu d'un fichier. Je veux faire un autre programme qui, entre autres, affiche le contenu du fichier et qui met à jour l'affichage à chaque modification du fichier.
Merci Nicolas
Chercher du coté du pattern Observer / Observable en derivant File et en