Sprache

FileLock Klasse

Definition

Ein Token, das eine Sperre für einen Bereich einer Datei darstellt.

[Android.Runtime.Register("java/nio/channels/FileLock", DoNotGenerateAcw=true)]
public abstract class FileLock : Java.Lang.Object, IDisposable, Java.Lang.IAutoCloseable
[<Android.Runtime.Register("java/nio/channels/FileLock", DoNotGenerateAcw=true)>]
type FileLock = class
    inherit Object
    interface IAutoCloseable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Vererbung
Attribute
Implementiert

Hinweise

Ein Token, das eine Sperre für einen Bereich einer Datei darstellt.

Jedes Mal, wenn eine Sperre für eine Datei über eine der FileChannel#lock(long,long,boolean) lock Methoden oder FileChannel#tryLock(long,long,boolean) tryLock Methoden der FileChannel Klasse abgerufen wird, AsynchronousFileChannel#lock(long,long,boolean,Object,CompletionHandler) lockAsynchronousFileChannel#tryLock(long,long,boolean) tryLockAsynchronousFileChannel wird ein Dateisperrobjekt erstellt.

Ein Dateisperrobjekt ist anfänglich gültig. Es bleibt gültig, bis die Sperre durch Aufrufen der #release release Methode freigegeben wird, indem der Kanal geschlossen wird, der zum Erwerb verwendet wurde, oder durch die Beendigung des Java virtuellen Computers, je nachdem, was zuerst kommt. Die Gültigkeit einer Sperre kann durch aufrufende #isValid isValid Methode geprüft werden.

Eine Dateisperre ist entweder exklusiv oder freigegeben. Eine freigegebene Sperre verhindert, dass andere gleichzeitig ausgeführte Programme eine überlappende exklusive Sperre abrufen, aber sie können überlappende freigegebene Sperren erwerben. Eine exklusive Sperre verhindert, dass andere Programme eine überlappende Sperre eines der beiden Typen erhalten. Sobald sie losgelassen wurde, hat eine Sperre keine weiteren Auswirkungen auf die Sperren, die von anderen Programmen erworben werden können.

Ob eine Sperre exklusiv oder freigegeben ist, kann durch aufrufende #isShared isShared Methode bestimmt werden. Einige Plattformen 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.

Die Sperren, die auf einer bestimmten Datei von einem einzelnen Java virtuellen Computer gehalten werden, überlappen sich nicht. Die #overlaps overlaps Methode kann verwendet werden, um zu testen, ob ein Kandidatensperrbereich eine vorhandene Sperre überlappt.

Ein Dateisperrobjekt zeichnet den Dateikanal auf, auf dessen Datei die Sperre gehalten wird, den Typ und die Gültigkeit der Sperre sowie die Position und Größe des gesperrten Bereichs. Nur die Gültigkeit einer Sperre kann im Laufe der Zeit geändert werden; alle anderen Aspekte des Sperrzustands sind unveränderlich.

Dateisperren werden im Namen des gesamten Java virtuellen Computers gespeichert. Sie eignen sich nicht für die Steuerung des Zugriffs auf eine Datei durch mehrere Threads innerhalb desselben virtuellen Computers.

Dateisperrobjekte sind sicher für die Verwendung durch mehrere gleichzeitige Threads.

"pdep"><h2> Plattformabhängigkeiten </h2>

Diese Dateisperr-API soll direkt der systemeigenen Sperreinrichtung des zugrunde liegenden Betriebssystems zugeordnet werden. Daher sollten die in einer Datei gespeicherten Sperren für alle Programme sichtbar sein, die Zugriff auf die Datei haben, unabhängig von der Sprache, in der diese Programme geschrieben wurden.

Ob eine Sperre tatsächlich verhindert, dass ein anderes Programm auf den Inhalt der gesperrten Region zugreifen kann, ist systemabhängig und daher nicht angegeben. Die systemeigenen Dateisperreinrichtungen einiger Systeme sind lediglich beratend, was bedeutet, dass Programme ein bekanntes Sperrprotokoll kooperativ beobachten müssen, um die Datenintegrität zu gewährleisten. Auf anderen Systemen sind systemeigene Dateisperren obligatorisch, d. h., wenn ein Programm eine Region einer Datei sperrt, werden andere Programme tatsächlich daran gehindert, auf diese Region in einer Weise zuzugreifen, die gegen die Sperre verstoßen würde. Auf noch anderen Systemen, ob systemeigene Dateisperren eine Empfehlung sind oder obligatorisch sind, ist pro Datei konfigurierbar. Um ein konsistentes und korrektes Verhalten auf allen Plattformen zu gewährleisten, wird dringend empfohlen, dass die von dieser API bereitgestellten Sperren verwendet werden, als wären sie Empfehlungssperren.

Bei einigen Systemen verhindert der Erwerb einer obligatorischen Sperre für eine Region einer Datei, dass diese Region und umgekehrt.java.nio.channels.FileChannel#map <i>mapped into memory</i> Programme, die Sperren und Zuordnung kombinieren, sollten darauf vorbereitet werden, dass diese Kombination fehlschlägt.

Bei einigen Systemen gibt das Schließen eines Kanals alle Sperren des virtuellen Computers Java auf der zugrunde liegenden Datei frei, unabhängig davon, ob die Sperren über diesen Kanal oder über einen anderen Kanal in derselben Datei geöffnet wurden. Es wird dringend empfohlen, innerhalb eines Programms einen eindeutigen Kanal zu verwenden, um alle Sperren für jede bestimmte Datei zu erwerben.

Einige Netzwerkdateisysteme ermöglichen die Verwendung von Dateisperrungen mit speicherzuordnungen Dateien nur, wenn die gesperrten Bereiche seitenbündig ausgerichtet sind und ein ganzes Vielfaches der Seitengröße der zugrunde liegenden Hardware. Einige Netzwerkdateisysteme implementieren keine Dateisperren für Regionen, die sich über eine bestimmte Position erstrecken, oft 2<sup>30</sup> oder 2<sup>31</sup>. Im Allgemeinen sollten Sie beim Sperren von Dateien, die sich in Netzwerkdateisystemen befinden, eine große Sorgfalt beachten.

In 1.4 hinzugefügt.

Java Dokumentation für java.nio.channels.FileLock.

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Konstruktoren

Name Beschreibung
FileLock(AsynchronousFileChannel, Int64, Int64, Boolean)

Initialisiert eine neue Instanz dieser Klasse.

FileLock(FileChannel, Int64, Int64, Boolean)

Initialisiert eine neue Instanz dieser Klasse.

FileLock(IntPtr, JniHandleOwnership)

Ein Konstruktor, der beim Erstellen verwalteter Darstellungen von JNI-Objekten verwendet wird; wird von der Laufzeit aufgerufen.

Eigenschaften

Name Beschreibung
Class

Gibt die Laufzeitklasse dieses Werts Objectzurück.

(Geerbt von Object)
Handle

Das Handle für die zugrunde liegende Android-Instanz.

(Geerbt von Object)
IsShared

Gibt an, ob diese Sperre freigegeben ist.

IsValid

Gibt an, ob es sich bei dieser Sperre um eine gültige Dateisperre handelt.

JniIdentityHashCode

Ruft den Identitätshashcode ab, der diesem Java Peer von der Interop-Laufzeit zugewiesen ist.

(Geerbt von Object)
JniManagedPeerState

Ein Token, das eine Sperre für einen Bereich einer Datei darstellt.

(Geerbt von JavaObject)
JniPeerMembers

Ein Token, das eine Sperre für einen Bereich einer Datei darstellt.

PeerReference

Ruft den JNI-Objektverweis für diesen Java Peer ab.

(Geerbt von Object)
ThresholdClass

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

ThresholdType

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

Methoden

Name Beschreibung
AcquiredBy()

Gibt den Kanal zurück, auf dessen Datei diese Sperre erworben wurde.

Channel()

Gibt den Dateikanal zurück, auf dessen Datei diese Sperre erworben wurde.

Clone()

Erstellt und gibt eine Kopie dieses Objekts zurück.

(Geerbt von Object)
Close()

Diese Methode ruft die #release Methode auf.

Construct(JniObjectReference, JniObjectReferenceOptions)

Ein Token, das eine Sperre für einen Bereich einer Datei darstellt.

(Geerbt von JavaObject)
Dispose()

Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden.

(Geerbt von Object)
Dispose(Boolean)

Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden.

(Geerbt von Object)
DisposeUnlessReferenced()

Ein Token, das eine Sperre für einen Bereich einer Datei darstellt.

(Geerbt von JavaObject)
Equals(Object)

Ein Token, das eine Sperre für einen Bereich einer Datei darstellt.

(Geerbt von JavaObject)
Equals(Object)

Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist.

(Geerbt von Object)
GetHashCode()

Gibt einen Hashcodewert für das Objekt zurück.

(Geerbt von Object)
JavaFinalize()

Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection bestimmt, dass keine weiteren Verweise auf das Objekt vorhanden sind.

(Geerbt von Object)
Notify()

Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet.

(Geerbt von Object)
NotifyAll()

Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten.

(Geerbt von Object)
Overlaps(Int64, Int64)

Gibt an, ob diese Sperre den angegebenen Sperrbereich überlappt.

Position()

Gibt die Position innerhalb der Datei des ersten Byte des gesperrten Bereichs zurück.

Release()

Gibt diese Sperre frei.

SetHandle(IntPtr, JniHandleOwnership)

Legt die Handle-Eigenschaft fest.

(Geerbt von Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Ein Token, das eine Sperre für einen Bereich einer Datei darstellt.

(Geerbt von JavaObject)
Size()

Gibt die Größe des gesperrten Bereichs in Byte zurück.

ToArray<T>()

Erstellt ein verwaltetes Array aus diesem Java Arraywrapper.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die den Bereich, den Typ und die Gültigkeit dieser Sperre beschreibt.

UnregisterFromRuntime()

Hebt die Registrierung dieses Java Peers aus der Interop-Laufzeit auf.

(Geerbt von Object)
Wait()

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch em benachrichtigt/em< oder >em<unterbrochen>/em<.><>

(Geerbt von Object)
Wait(Int64, Int32)

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)
Wait(Int64)

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

Name Beschreibung
IJavaPeerable.Disposed()

Ein Token, das eine Sperre für einen Bereich einer Datei darstellt.

(Geerbt von JavaObject)
IJavaPeerable.Finalized()

Ein Token, das eine Sperre für einen Bereich einer Datei darstellt.

(Geerbt von JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Ein Token, das eine Sperre für einen Bereich einer Datei darstellt.

(Geerbt von JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Ein Token, das eine Sperre für einen Bereich einer Datei darstellt.

(Geerbt von JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Ein Token, das eine Sperre für einen Bereich einer Datei darstellt.

(Geerbt von JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Ein Token, das eine Sperre für einen Bereich einer Datei darstellt.

(Geerbt von JavaObject)
IJavaPeerable.UnregisterFromRuntime()

Ein Token, das eine Sperre für einen Bereich einer Datei darstellt.

Erweiterungsmethoden

Name Beschreibung
GetJniTypeName(IJavaPeerable)

Ruft den JNI-Namen des Typs der Instanz selfab.

JavaAs<TResult>(IJavaPeerable)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

JavaCast<TResult>(IJavaObject)

Führt eine android-laufzeitgecheckte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

Ein Token, das eine Sperre für einen Bereich einer Datei darstellt.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

Gilt für: