FileLock Klasse
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.
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 |
| 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 |
| 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 |
| JavaAs<TResult>(IJavaPeerable) |
Versuchen Sie, die Eingabe |
| 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 |