FileChannel.Lock Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Overload
Lock() |
Acquisisce un blocco esclusivo sul file del canale. |
Lock(Int64, Int64, Boolean) |
Acquisisce un blocco sull'area specificata del file del canale. |
Lock()
Acquisisce un blocco esclusivo sul file del canale.
[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
Restituisce
Oggetto lock che rappresenta il blocco appena acquisito
- Attributi
Eccezioni
il canale di file è chiuso.
questo canale non è stato aperto per la scrittura.
Un blocco è già mantenuto che si sovrappone a questa richiesta di blocco oppure un altro thread è in attesa di acquisire un blocco che si sovrapponerà a questa richiesta.
il thread chiamante è stato interrotto durante l'attesa di acquisire il blocco.
il canale è stato chiuso mentre il thread chiamante era in attesa di acquisire il blocco.
se si verifica un altro errore di I/O durante il recupero del blocco richiesto.
Commenti
Acquisisce un blocco esclusivo sul file del canale.
Una chiamata di questo metodo del form fc.lock()
si comporta esattamente come la chiamata
fc.{@link #lock(long,long,boolean) lock}(0L, Long.MAX_VALUE, false)
Documentazione java per java.nio.channels.FileChannel.lock()
.
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.
Si applica a
Lock(Int64, Int64, Boolean)
Acquisisce un blocco sull'area specificata del file del canale.
[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
Parametri
- position
- Int64
Posizione in cui deve iniziare l'area bloccata; deve essere non negativo
- size
- Int64
Dimensioni dell'area bloccata; deve essere non negativo e la somma position
+ size
deve essere non negativa
- shared
- Boolean
true
per richiedere un blocco condiviso, nel qual caso questo canale deve essere aperto per la lettura (ed eventualmente la scrittura); false
per richiedere un blocco esclusivo, nel qual caso questo canale deve essere aperto per la scrittura (ed eventualmente la lettura)
Restituisce
Oggetto lock che rappresenta il blocco appena acquisito
- Attributi
Eccezioni
se position
o size
è negativo.
se il canale è chiuso.
se l'area richiesta si sovrappone a una richiesta di blocco o di blocco in sospeso esistente.
se il canale non viene aperto in modalità di lettura ma condiviso è true.
se il canale non viene aperto in modalità di scrittura ma condiviso è false.
se questo canale viene chiuso da un altro thread durante l'esecuzione di questo metodo.
se il thread viene interrotto mentre è in attesa del blocco del file desiderato.
se si verifica un altro errore di I/O.
Commenti
Acquisisce un blocco sull'area specificata del file del canale.
Una chiamata di questo metodo verrà bloccata fino a quando l'area non può essere bloccata, questo canale viene chiuso o il thread di richiamo viene interrotto, a ogni volta che arriva per primo.
Se questo canale viene chiuso da un altro thread durante una chiamata di questo metodo, verrà generata un'eccezione AsynchronousCloseException
.
Se il thread di richiamo viene interrotto durante l'attesa di acquisire il blocco, verrà impostato lo stato di interruzione e verrà generata un'eccezione FileLockInterruptionException
. Se lo stato di interrupt del invoker viene impostato quando questo metodo viene richiamato, tale eccezione verrà generata immediatamente; lo stato di interruzione del thread non verrà modificato.
L'area specificata dai position
parametri e size
non deve essere contenuta all'interno o addirittura sovrapporsi al file sottostante effettivo. Le aree di blocco sono fisse; se inizialmente un'area bloccata contiene la fine del file e il file aumenta oltre l'area, la nuova parte del file non verrà coperta dal blocco. Se è previsto un aumento delle dimensioni di un file e è necessario un blocco per l'intero file, è necessario che un'area a partire da zero e non sia inferiore alla dimensione massima prevista del file, deve essere bloccata. Il metodo zero-argument #lock()
blocca semplicemente un'area di dimensioni Long#MAX_VALUE
.
Alcuni sistemi operativi non supportano blocchi condivisi, nel qual caso una richiesta di blocco condiviso viene convertita automaticamente in una richiesta di blocco esclusivo. Se il blocco appena acquisito è condiviso o esclusivo può essere testato richiamando il metodo dell'oggetto FileLock#isShared() isShared
di blocco risultante.
I blocchi di file vengono mantenuti per conto dell'intera macchina virtuale Java. Non sono adatti per controllare l'accesso a un file da più thread all'interno della stessa macchina virtuale.
Documentazione java per java.nio.channels.FileChannel.lock(long, long, boolean)
.
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.