j'utilise la biblioth=E9que JDIC pour ouvrir des fichiers. Je
souhaiterais savoir s'il existe une m=E9thode permettant de savoir si le
fichier est ouvert ou non pour afficher son =E9tat dans mon appli.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
alexandre cartapanis
Bonjour,
j'utilise la bibliothéque JDIC pour ouvrir des fichiers. Je souhaiterais savoir s'il existe une méthode permettant de savoir si l e fichier est ouvert ou non pour afficher son état dans mon appli.
Merci
C'est possible en utilisant le package java.nio En gros:
<code>
File f = new File("/chemin/vers/fichier"); FileChannel channel = new FileInputStream(f).getChannel();
// ou // FileChannel channel = new FileOutputStream(f).getChannel(); // FileChannel channel = new RandomAccessFile(f, "rw").getChannel();
FileLock lock = channel.lock();// pour obtenir un verrou sur le fichier
boolean locked = (channel.tryLock() == null);// pour savoir si le fichier est verrouillé
</code>
L'idée ici est de vérifier si l'on peut obtenir un verrou. Si on ne p eut pas, c'est que le fichier est verrouillé, donc déjà utilisé.
Attention, je n'ai jamais testé ce code. Il est possible que les verrou s soient limité a Java (si un programme acquiert un verrou, peut être q ue java ne le saura pas). A tester, mais je pense que ça marchera.
Maintenant, certain fichier peuvent être ouvert, et pas verrouillé. C ela dépend de l'outil utilisé, et aussi de l'OS.
A toi de faire des tests...
-- Alexandre CARTAPANIS - Responsable Système et Réseau Email Gsm. 06 72 07 51 55
j'utilise la bibliothéque JDIC pour ouvrir des fichiers. Je
souhaiterais savoir s'il existe une méthode permettant de savoir si l e
fichier est ouvert ou non pour afficher son état dans mon appli.
Merci
C'est possible en utilisant le package java.nio
En gros:
<code>
File f = new File("/chemin/vers/fichier");
FileChannel channel = new FileInputStream(f).getChannel();
// ou
// FileChannel channel = new FileOutputStream(f).getChannel();
// FileChannel channel = new RandomAccessFile(f, "rw").getChannel();
FileLock lock = channel.lock();// pour obtenir un verrou sur le fichier
boolean locked = (channel.tryLock() == null);// pour savoir si le
fichier est verrouillé
</code>
L'idée ici est de vérifier si l'on peut obtenir un verrou. Si on ne p eut
pas, c'est que le fichier est verrouillé, donc déjà utilisé.
Attention, je n'ai jamais testé ce code. Il est possible que les verrou s
soient limité a Java (si un programme acquiert un verrou, peut être q ue
java ne le saura pas). A tester, mais je pense que ça marchera.
Maintenant, certain fichier peuvent être ouvert, et pas verrouillé. C ela
dépend de l'outil utilisé, et aussi de l'OS.
A toi de faire des tests...
--
Alexandre CARTAPANIS - Responsable Système et Réseau
Email alexandre.cartapanis@macymed.fr
Gsm. 06 72 07 51 55
j'utilise la bibliothéque JDIC pour ouvrir des fichiers. Je souhaiterais savoir s'il existe une méthode permettant de savoir si l e fichier est ouvert ou non pour afficher son état dans mon appli.
Merci
C'est possible en utilisant le package java.nio En gros:
<code>
File f = new File("/chemin/vers/fichier"); FileChannel channel = new FileInputStream(f).getChannel();
// ou // FileChannel channel = new FileOutputStream(f).getChannel(); // FileChannel channel = new RandomAccessFile(f, "rw").getChannel();
FileLock lock = channel.lock();// pour obtenir un verrou sur le fichier
boolean locked = (channel.tryLock() == null);// pour savoir si le fichier est verrouillé
</code>
L'idée ici est de vérifier si l'on peut obtenir un verrou. Si on ne p eut pas, c'est que le fichier est verrouillé, donc déjà utilisé.
Attention, je n'ai jamais testé ce code. Il est possible que les verrou s soient limité a Java (si un programme acquiert un verrou, peut être q ue java ne le saura pas). A tester, mais je pense que ça marchera.
Maintenant, certain fichier peuvent être ouvert, et pas verrouillé. C ela dépend de l'outil utilisé, et aussi de l'OS.
A toi de faire des tests...
-- Alexandre CARTAPANIS - Responsable Système et Réseau Email Gsm. 06 72 07 51 55
j'utilise la bibliothéque JDIC pour ouvrir des fichiers. Je souhaiterais savoir s'il existe une méthode permettant de savoir si le fichier est ouvert ou non pour afficher son état dans mon appli.
Merci
C'est possible en utilisant le package java.nio En gros:
<code>
File f = new File("/chemin/vers/fichier"); FileChannel channel = new FileInputStream(f).getChannel();
// ou // FileChannel channel = new FileOutputStream(f).getChannel(); // FileChannel channel = new RandomAccessFile(f, "rw").getChannel();
FileLock lock = channel.lock();// pour obtenir un verrou sur le fichier
boolean locked = (channel.tryLock() == null);// pour savoir si le fichier est verrouillé
</code>
L'idée ici est de vérifier si l'on peut obtenir un verrou. Si on ne peut pas, c'est que le fichier est verrouillé, donc déjà utilisé.
Attention, je n'ai jamais testé ce code. Il est possible que les verrous soient limité a Java (si un programme acquiert un verrou, peut être que java ne le saura pas). A tester, mais je pense que ça marchera.
Maintenant, certain fichier peuvent être ouvert, et pas verrouillé. Cela dépend de l'outil utilisé, et aussi de l'OS.
A toi de faire des tests...
D'après la javadoc, on peut demander une lock EXCLUSIF, la JVM lockant
au niveau système pour garantir l'exclusivité même entre Java et un autre programme. On peut demander un lock PARTAGE, ce qui autorise d'autres programme à récupérer ce lock partagé sur le fichier. Cf lka javadoc de l'objet java.nio.channels.FileLock qui explique ça.
Bonjour,
j'utilise la bibliothéque JDIC pour ouvrir des fichiers. Je
souhaiterais savoir s'il existe une méthode permettant de savoir si le
fichier est ouvert ou non pour afficher son état dans mon appli.
Merci
C'est possible en utilisant le package java.nio
En gros:
<code>
File f = new File("/chemin/vers/fichier");
FileChannel channel = new FileInputStream(f).getChannel();
// ou
// FileChannel channel = new FileOutputStream(f).getChannel();
// FileChannel channel = new RandomAccessFile(f, "rw").getChannel();
FileLock lock = channel.lock();// pour obtenir un verrou sur le fichier
boolean locked = (channel.tryLock() == null);// pour savoir si le
fichier est verrouillé
</code>
L'idée ici est de vérifier si l'on peut obtenir un verrou. Si on ne peut
pas, c'est que le fichier est verrouillé, donc déjà utilisé.
Attention, je n'ai jamais testé ce code. Il est possible que les verrous
soient limité a Java (si un programme acquiert un verrou, peut être que
java ne le saura pas). A tester, mais je pense que ça marchera.
Maintenant, certain fichier peuvent être ouvert, et pas verrouillé. Cela
dépend de l'outil utilisé, et aussi de l'OS.
A toi de faire des tests...
D'après la javadoc, on peut demander une lock EXCLUSIF, la JVM lockant
au niveau système pour garantir l'exclusivité même entre Java et un
autre programme. On peut demander un lock PARTAGE, ce qui autorise
d'autres programme à récupérer ce lock partagé sur le fichier.
Cf lka javadoc de l'objet java.nio.channels.FileLock qui explique ça.
j'utilise la bibliothéque JDIC pour ouvrir des fichiers. Je souhaiterais savoir s'il existe une méthode permettant de savoir si le fichier est ouvert ou non pour afficher son état dans mon appli.
Merci
C'est possible en utilisant le package java.nio En gros:
<code>
File f = new File("/chemin/vers/fichier"); FileChannel channel = new FileInputStream(f).getChannel();
// ou // FileChannel channel = new FileOutputStream(f).getChannel(); // FileChannel channel = new RandomAccessFile(f, "rw").getChannel();
FileLock lock = channel.lock();// pour obtenir un verrou sur le fichier
boolean locked = (channel.tryLock() == null);// pour savoir si le fichier est verrouillé
</code>
L'idée ici est de vérifier si l'on peut obtenir un verrou. Si on ne peut pas, c'est que le fichier est verrouillé, donc déjà utilisé.
Attention, je n'ai jamais testé ce code. Il est possible que les verrous soient limité a Java (si un programme acquiert un verrou, peut être que java ne le saura pas). A tester, mais je pense que ça marchera.
Maintenant, certain fichier peuvent être ouvert, et pas verrouillé. Cela dépend de l'outil utilisé, et aussi de l'OS.
A toi de faire des tests...
D'après la javadoc, on peut demander une lock EXCLUSIF, la JVM lockant
au niveau système pour garantir l'exclusivité même entre Java et un autre programme. On peut demander un lock PARTAGE, ce qui autorise d'autres programme à récupérer ce lock partagé sur le fichier. Cf lka javadoc de l'objet java.nio.channels.FileLock qui explique ça.
Syrion
Précision Javadoc: " Platform dependencies
This file-locking API is intended to map directly to the native locking facility of the underlying operating system. Thus the locks held on a file should be visible to all programs that have access to the file, regardless of the language in which those programs are written. "
Donc pas de pb !
Précision Javadoc:
" Platform dependencies
This file-locking API is intended to map directly to the native locking
facility of the underlying operating system. Thus the locks held on a
file should be visible to all programs that have access to the file,
regardless of the language in which those programs are written. "
This file-locking API is intended to map directly to the native locking facility of the underlying operating system. Thus the locks held on a file should be visible to all programs that have access to the file, regardless of the language in which those programs are written. "