FileLock クラス

定義

ファイルの領域のロックを表すトークン。

[Android.Runtime.Register("java/nio/channels/FileLock", DoNotGenerateAcw=true)]
public abstract class FileLock : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, 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
継承
FileLock
属性
実装

注釈

ファイルの領域のロックを表すトークン。

ファイル ロック オブジェクトは、FileChannel クラスのいずれかのFileChannel#lock(long,long,boolean) lockメソッドまたはFileChannel#tryLock(long,long,boolean) tryLock メソッド、またはAsynchronousFileChannel クラスのAsynchronousFileChannel#lock(long,long,boolean,Object,CompletionHandler) lockメソッドまたはAsynchronousFileChannel#tryLock(long,long,boolean) tryLock メソッドを使用して、ファイルに対してロックが取得されるたびに作成されます。

ファイル ロック オブジェクトは、最初は有効です。 ロックが解除されるまでは、#release release メソッドを呼び出すか、取得に使用されたチャネルを閉じるか、Java仮想マシンの終了のいずれか早い方で有効です。 ロックの有効性は、 #isValid isValid メソッドを呼び出すことによってテストできます。

ファイル ロックは 排他 ロックまたは 共有ロックです。 共有ロックを使用すると、同時に実行されている他のプログラムが重複する排他ロックを取得できなくなりますが、重複する共有ロックを取得できます。 排他ロックは、他のプログラムがいずれかのタイプの重複ロックを取得できないようにします。 いったん解放されると、ロックは他のプログラムによって取得される可能性のあるロックにそれ以上影響しません。

ロックが排他的か共有かは、 #isShared isShared メソッドを呼び出すことによって決定できます。 一部のプラットフォームでは共有ロックがサポートされていません。この場合、共有ロックの要求は排他ロックの要求に自動的に変換されます。

1 つのJava仮想マシンによって特定のファイルに保持されているロックは重複しません。 #overlaps overlaps メソッドを使用して、候補のロック範囲が既存のロックと重複しているかどうかをテストできます。

ファイル ロック オブジェクトは、ロックが保持されているファイルのファイル チャネル、ロックの種類と有効性、ロックされた領域の位置とサイズを記録します。 ロックの有効性のみが時間の経過と同時に変更される可能性があります。ロックの状態の他のすべての側面は不変です。

ファイル ロックは、Java仮想マシン全体に代わって保持されます。 同じ仮想マシン内の複数のスレッドによるファイルへのアクセスの制御には適していません。

ファイル ロック オブジェクトは、複数の同時実行スレッドで安全に使用できます。

"pdep"><h2> プラットフォームの依存関係 </h2>

このファイル ロック API は、基になるオペレーティング システムのネイティブ ロック機能に直接マップすることを目的としています。 したがって、ファイルに保持されているロックは、それらのプログラムが書き込まれる言語に関係なく、ファイルにアクセスできるすべてのプログラムに表示されます。

ロックによって別のプログラムがロックされた領域の内容にアクセスできないようにするかどうかはシステムに依存するため、指定されていません。 一部のシステムのネイティブファイルロック機能は単なる 勧告であり、データの整合性を保証するためにプログラムが既知のロックプロトコルを協調的に観察する必要があることを意味します。 他のシステムでは、ネイティブファイルロックが 必須です。つまり、あるプログラムがファイルの領域をロックした場合、他のプログラムはロックに違反するような方法でその領域にアクセスできなくなります。 ただし、他のシステムでは、ネイティブ ファイル ロックがアドバイザリか必須かは、ファイルごとに構成できます。 プラットフォーム間で一貫性のある正しい動作を保証するために、この API によって提供されるロックは、アドバイザリ ロックであるかのように使用することを強くお勧めします。

一部のシステムでは、ファイルの領域に対して必須のロックを取得すると、そのリージョンが java.nio.channels.FileChannel#map <i>mapped into memory</i>されなくなります。その逆も同様です。 ロックとマッピングを組み合わせたプログラムは、この組み合わせが失敗するように準備する必要があります。

一部のシステムでは、チャネルを閉じると、そのチャネルまたは同じファイルで開かれている別のチャネルを介してロックが取得されたかどうかに関係なく、基になるファイル上のJava仮想マシンによって保持されているすべてのロックが解放されます。 プログラム内では、特定のファイルのすべてのロックを取得するために一意のチャネルを使用することを強くお勧めします。

一部のネットワーク ファイルシステムでは、ロックされた領域がページアラインされ、基になるハードウェアのページ サイズの倍数全体である場合にのみ、メモリ マップファイルでファイル ロックを使用できます。 一部のネットワーク ファイルシステムでは、特定の位置 (多くの場合、2<sup>30</sup> または 2<sup>31</sup> を超える領域に対してファイル ロックが実装されていません。 一般に、ネットワーク ファイルシステム上に存在するファイルをロックするときは、細心の注意を払う必要があります。

1.4 で追加されました。

java.nio.channels.FileLockの Java ドキュメント。

このページの一部は、Androidオープンソースプロジェクトによって作成および共有された作業に基づく変更でありCreative Commons 2.5属性ライセンスに記載されている条件に従って使用されます。

コンストラクター

名前 説明
FileLock(AsynchronousFileChannel, Int64, Int64, Boolean)

このクラスの新しいインスタンスを初期化します。

FileLock(FileChannel, Int64, Int64, Boolean)

このクラスの新しいインスタンスを初期化します。

FileLock(IntPtr, JniHandleOwnership)

JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。

プロパティ

名前 説明
Class

この Objectのランタイム クラスを返します。

(継承元 Object)
Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
IsShared

このロックが共有されているかどうかを示します。

IsValid

このロックが有効なファイル ロックであるかどうかを示します。

JniIdentityHashCode

ファイルの領域のロックを表すトークン。

(継承元 Object)
JniPeerMembers

ファイルの領域のロックを表すトークン。

PeerReference

ファイルの領域のロックを表すトークン。

(継承元 Object)
ThresholdClass

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

ThresholdType

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

メソッド

名前 説明
AcquiredBy()

このロックが取得されたファイルのチャネルを返します。

Channel()

このロックが取得されたファイルの元のファイル チャネルを返します。

Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
Close()

このメソッドは、 #release メソッドを呼び出します。

Dispose()

ファイルの領域のロックを表すトークン。

(継承元 Object)
Dispose(Boolean)

ファイルの領域のロックを表すトークン。

(継承元 Object)
Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
JavaFinalize()

オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
Notify()

このオブジェクトのモニターで待機している 1 つのスレッドを起動します。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドを起動します。

(継承元 Object)
Overlaps(Int64, Int64)

このロックが特定のロック範囲と重複しているかどうかを示します。

Position()

ロックされた領域の最初のバイトのファイル内の位置を返します。

Release()

このロックを解除します。

SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
Size()

ロックされた領域のサイズをバイト単位で返します。

ToArray<T>()

ファイルの領域のロックを表すトークン。

(継承元 Object)
ToString()

このロックの範囲、型、および有効性を説明する文字列を返します。

UnregisterFromRuntime()

ファイルの領域のロックを表すトークン。

(継承元 Object)
Wait()

現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)
Wait(Int64)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)

明示的なインターフェイスの実装

名前 説明
IJavaPeerable.Disposed()

ファイルの領域のロックを表すトークン。

(継承元 Object)
IJavaPeerable.DisposeUnlessReferenced()

ファイルの領域のロックを表すトークン。

(継承元 Object)
IJavaPeerable.Finalized()

ファイルの領域のロックを表すトークン。

(継承元 Object)
IJavaPeerable.JniManagedPeerState

ファイルの領域のロックを表すトークン。

(継承元 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

ファイルの領域のロックを表すトークン。

(継承元 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

ファイルの領域のロックを表すトークン。

(継承元 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

ファイルの領域のロックを表すトークン。

(継承元 Object)

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

ファイルの領域のロックを表すトークン。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象