Wie Sie feststellen, wenn die Datei von einem anderen Prozess (Java)
Ich habe versucht, viele Beispiele, aber niemand arbeitet.
Ich versuche dies aber nicht funktionieren.
Ich habe versucht, auch die Verwendung der tryLock()
. Es gibt immer false. warum?
private boolean checkCompleteFile(File f)
{
RandomAccessFile file = null;
FileLock fileLock = null;
try
{
file = new RandomAccessFile(f, "rw");
FileChannel fileChannel = file.getChannel();
fileLock = fileChannel.lock();
if (fileLock != null)
{
fileLock.release();
file.close();
return false;
}
}
catch(Exception e)
{
return false;
}
return true;
}
- Was nicht funktioniert? Was für ein Ergebnis kommst du von dem code, den Sie hier angeboten? Welches Ergebnis erwarten Sie?
- Ich kann immer eine lock Datei, selbst wenn die Datei geschrieben wird!!!
- Dein code macht keinen Sinn. Die einzige Zeit, die Sie true zurückgeben, wenn
FileChannel.lock()
zurücknull,
die Sie niemals tun. Sie sind auch undicht, den Kanal in diesem Fall, aber es kann eigentlich nie passieren. Wenn Sie es geschafft haben, die Sperre, das bedeutet, dass niemand sonst hat Sie gesperrt: sicherlich möchten Sie zurücktrue
in diesem Fall?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fangen Sie eine Ausnahme und geben Sie false zurück, das ist, warum Sie bekommen falsch die ganze Zeit, etwas zu tun mit der Ausnahme oder nicht fangen, so dass Sie wissen, wenn eine Ausnahme geworfen wurde, wenn Sie fangen eine Allgemeine Ausnahme ein false return-Wert ist nicht wirklich aussagekräftig.
Cam Sie nur versuchen, auf die Datei zuzugreifen und fangen Sie eine Ausnahme, wenn es fehlschlägt:
Beachten Sie, dass die RandomAccessFile Klasse wirft:
Versuchen Sie es mit dieser:
Wie etwa mit dem linux-Befehl ?
Den Befehl wird angezeigt, das die Datei geöffnet, Sie können analysieren it, um zu überprüfen, die Sie verwenden.