FileChannel.Lock Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überlädt
Lock() |
Erwirbt eine exklusive Sperre für die Datei dieses Kanals. |
Lock(Int64, Int64, Boolean) |
Erwirbt eine Sperre für die angegebene Region der Datei dieses Kanals. |
Lock()
Erwirbt eine exklusive Sperre für die Datei dieses Kanals.
[Android.Runtime.Register("lock", "()Ljava/nio/channels/FileLock;", "")]
public Java.Nio.Channels.FileLock? Lock ();
[<Android.Runtime.Register("lock", "()Ljava/nio/channels/FileLock;", "")>]
member this.Lock : unit -> Java.Nio.Channels.FileLock
Gibt zurück
Ein Sperrobjekt, das die neu erworbene Sperre darstellt
- Attribute
Ausnahmen
der Dateikanal geschlossen ist.
Dieser Kanal wurde nicht zum Schreiben geöffnet.
Entweder wird eine Sperre bereits gehalten, die diese Sperranforderung überlappt, oder ein anderer Thread wartet auf den Erwerb einer Sperre, die sich mit dieser Anforderung überlappt.
Der aufrufende Thread wurde während des Wartens auf den Erwerb der Sperre unterbrochen.
Der Kanal wurde geschlossen, während der aufrufende Thread auf den Erwerb der Sperre wartete.
wenn beim Abrufen der angeforderten Sperre ein anderer E/A-Fehler auftritt.
Hinweise
Erwirbt eine exklusive Sperre für die Datei dieses Kanals.
Ein Aufruf dieser Methode des Formulars fc.lock()
verhält sich genauso wie der Aufruf
fc.{@link #lock(long,long,boolean) lock}(0L, Long.MAX_VALUE, false)
Java-Dokumentation für java.nio.channels.FileChannel.lock()
.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Gilt für:
Lock(Int64, Int64, Boolean)
Erwirbt eine Sperre für die angegebene Region der Datei dieses Kanals.
[Android.Runtime.Register("lock", "(JJZ)Ljava/nio/channels/FileLock;", "GetLock_JJZHandler")]
public abstract Java.Nio.Channels.FileLock? Lock (long position, long size, bool shared);
[<Android.Runtime.Register("lock", "(JJZ)Ljava/nio/channels/FileLock;", "GetLock_JJZHandler")>]
abstract member Lock : int64 * int64 * bool -> Java.Nio.Channels.FileLock
Parameter
- position
- Int64
Die Position, an der der gesperrte Bereich gestartet werden soll; muss nicht negativ sein
- size
- Int64
Die Größe des gesperrten Bereichs; muss nicht negativ sein, und die Summe position
+ size
muss nicht negativ sein.
- shared
- Boolean
true
um eine freigegebene Sperre anzufordern, in diesem Fall muss dieser Kanal zum Lesen (und möglicherweise Schreiben) geöffnet sein; false
um eine exklusive Sperre anzufordern, in diesem Fall muss dieser Kanal zum Schreiben (und möglicherweise lesen) geöffnet sein.
Gibt zurück
Ein Sperrobjekt, das die neu erworbene Sperre darstellt
- Attribute
Ausnahmen
wenn position
oder size
negativ ist.
wenn dieser Kanal geschlossen ist.
wenn der angeforderte Bereich eine vorhandene Sperr- oder ausstehende Sperranforderung überlappt.
wenn der Kanal nicht im Lesemodus geöffnet, aber freigegeben ist true.
wenn der Kanal nicht im Schreibmodus geöffnet, aber freigegeben ist "false".
wenn dieser Kanal von einem anderen Thread geschlossen wird, während diese Methode ausgeführt wird.
wenn der Thread während des Wartens auf die gewünschte Dateisperre unterbrochen wird.
wenn ein anderer E/A-Fehler auftritt.
Hinweise
Erwirbt eine Sperre für die angegebene Region der Datei dieses Kanals.
Ein Aufruf dieser Methode wird blockiert, bis der Bereich gesperrt werden kann, dieser Kanal geschlossen wird oder der aufrufende Thread unterbrochen wird, je nachdem, was zuerst eintritt.
Wenn dieser Kanal während eines Aufrufs dieser Methode von einem anderen Thread geschlossen wird, wird ein AsynchronousCloseException
Fehler ausgelöst.
Wenn der aufrufende Thread unterbrochen wird, während er auf den Erwerb der Sperre wartet, wird der Unterbrechungsstatus festgelegt und ein FileLockInterruptionException
Fehler ausgelöst. Wenn der Interruptstatus des Aufrufers festgelegt wird, wenn diese Methode aufgerufen wird, wird diese Ausnahme sofort ausgelöst. der Unterbrechungsstatus des Threads wird nicht geändert.
Der durch die position
Parameter size
angegebene Bereich muss nicht in der tatsächlich zugrunde liegenden Datei enthalten sein oder sogar überlappen. Sperrbereiche sind in der Größe festgelegt; wenn ein gesperrter Bereich anfangs das Ende der Datei enthält und die Datei über den Bereich hinaus wächst, wird der neue Teil der Datei nicht von der Sperre abgedeckt. Wenn erwartet wird, dass eine Datei größer wird und eine Sperre für die gesamte Datei erforderlich ist, sollte ein Bereich mit Null und nicht kleiner als die erwartete maximale Größe der Datei gesperrt werden. Die Null-Argument-Methode #lock()
sperrt einfach einen Bereich der Größe Long#MAX_VALUE
.
Einige Betriebssysteme unterstützen keine freigegebenen Sperren. In diesem Fall wird eine Anforderung für eine freigegebene Sperre automatisch in eine Anforderung für eine exklusive Sperre konvertiert. Ob die neu erworbene Sperre freigegeben oder exklusiv ist, kann durch Aufrufen der Methode des resultierenden Sperrobjekts FileLock#isShared() isShared
getestet werden.
Dateisperren werden im Namen des gesamten virtuellen Java-Computers gespeichert. Sie eignen sich nicht für die Steuerung des Zugriffs auf eine Datei durch mehrere Threads innerhalb desselben virtuellen Computers.
Java-Dokumentation für java.nio.channels.FileChannel.lock(long, long, boolean)
.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.