Freigeben über


FileChannel.Lock Methode

Definition

Ü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.

Gilt für: