Überprüfen, ob Datei geöffnet ist!

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo!


Habe ich in Java die Möglichkeit, zu überprüfen ob eine Datei geöffnet ist?




Viele Grüße
 
Anonymous hat gesagt.:
..Habe ich in Java die Möglichkeit, zu überprüfen ob eine Datei geöffnet ist?..
Über einen FileLock kann man verhindern, daß von verschiedenen Benutzern
gleichzeitig auf eine Datei zugegriffen wird:
Code:
   private FileChannel file;
    private FileLock lock;
...
            try {
                file = new RandomAccessFile(new File("Myfile.txt"), "rw").getChannel();
                lock = file.tryLock();
                if(lock == null) {
                    //die Datei wurde bereits irgendwo geöffnet
                }else{
                    //die Datei ist noch von sonst niemandem geöffnet worden
                    //und ist jetzt hier geöffnet
                }
            } catch (IOException e){
                e.printStackTrace();
            }
Natürlich muss man zum Schluss den FileLock wieder freigeben:
Code:
           try {
                lock.release();// Release the lock
                file.close();// Close the file
            } catch (IOException e) {
                e.printStackTrace();
            }
 
Wie verhält sich das denn unter verschiedenen Betriebssystemen? Unter Windows gibts ja irgendwie die Möglichkeit Files zu locken. Aber unter Linux kann ich eigentlich immer an eine Datei ran, egal was ein anderer Prozess gerade damit macht. Oder gilt das Java Lock nur innterhalb einer JVM?
 
RaoulDuke hat gesagt.:
Wie verhält sich das denn unter verschiedenen Betriebssystemen? ..
java.nio.channels.FileChannel.tryLock versucht einen Systemweiten exclusive Lock der Datei zu bekommen.

Die Methode gibt ein Lockobjekt zurück das den neu erworbenen Lock darstellt, oder null wenn der Lock
nicht erworben werden konnte weil ein anderes Programm einen überlappenden Lock hält.

Wirft ClosedChannelException wenn der Channel "closed" ist,

OverlappingFileLockException wenn ein überlappender Lock bereits von derselben JVM gehalten wird
oder wenn ein anderer Thread gleichzeitig versucht einen überlappenden Lock zu erwerben,

IOException wenn irgendein anderer I/O error passiert.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben