AsynchronousFileChannel 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
一個非同步通道,用於讀取、寫入及操作檔案。
[Android.Runtime.Register("java/nio/channels/AsynchronousFileChannel", ApiSince=26, DoNotGenerateAcw=true)]
public abstract class AsynchronousFileChannel : Java.Lang.Object, IDisposable, Java.Nio.Channels.IAsynchronousChannel
[<Android.Runtime.Register("java/nio/channels/AsynchronousFileChannel", ApiSince=26, DoNotGenerateAcw=true)>]
type AsynchronousFileChannel = class
inherit Object
interface IAsynchronousChannel
interface IChannel
interface ICloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 繼承
- 屬性
- 實作
備註
一個非同步通道,用於讀取、寫入及操作檔案。
當透過呼叫 #open open 此類別定義的方法開啟檔案時,會建立一個非同步檔案通道。 該檔案包含一個可變長度的位元組序列,可讀寫,目前大小可為 #size() queried。 當位元組寫入超過目前大小時,檔案大小會增加;當檔案大小為 #truncate truncated時會減少。
非同步檔案通道在檔案中沒有 當前位置 。 檔案位置會指定給每個啟動非同步操作的讀寫方法。
CompletionHandler A 被指定為參數,並被呼叫以消耗 I/O 操作的結果。 此類別也定義了啟動非同步操作的讀寫方法,回傳 a Future 以表示操作的待處理結果。 可用 Future 來檢查操作是否完成、等待完成,然後取得結果。
除了讀寫操作外,此類別還定義了以下操作:
<UL>
<李>
對檔案的更新可能是 #force <i>forced out</i> 針對底層儲存裝置,確保系統當機時資料不會遺失。
</李>
<李>
檔案的某個區域可能無法 #lock <i>locked</i> 被其他程式存取。
</李>
</ul>
An AsynchronousFileChannel 與一個執行緒池相關聯,任務會提交至該池,以處理 I/O 事件並派遣給完成處理程序,這些處理器會消耗通道上 I/O 操作的結果。 對於在通道上啟動的 I/O 操作,完成處理程序會被執行緒池中的某一個執行緒呼叫(這確保完成處理程序是由具有預期 <em>身份/em> 的<執行緒執行)。 當 I/O 操作立即完成,且發起執行緒本身是執行緒池中的執行緒時,則可由發起執行緒直接呼叫完成處理程序。 當建立 AsynchronousFileChannel 時未指定執行緒池,該通道會與系統相關的預設執行緒池相關聯,該執行緒池可與其他通道共享。 預設執行緒池是由類別定義 AsynchronousChannelGroup 的系統屬性配置的。
此類通道可安全由多個並行執行緒使用。
Channel#close close該方法可依介面指定Channel,隨時被呼叫。 這使得通道上所有未完成的非同步操作,唯獨 除外。AsynchronousCloseException 同時可能有多個讀寫操作未完成。 當多個讀寫操作尚未完成時,則不指定輸入輸出操作的順序及完成處理程序的呼叫順序;它們並不特別保證會依照操作啟動的順序執行。 讀取或寫入時使用的 不 java.nio.ByteBuffer ByteBuffers 適合多個同時 I/O 操作使用。 此外,在啟動 I/O 操作後,應注意在操作完成前不被存取緩衝區。
與 FileChannel一樣,該類別實例所提供的檔案視圖保證與同一程式中其他實例所提供的相同檔案視圖一致。 然而,由於底層作業系統執行快取及網路檔案系統協定造成的延遲,該實例所提供的視圖可能與其他同時執行的程式所見一致,也可能不一致。 無論這些程式使用的語言為何,無論它們是在同一台機器上執行還是在其他機器上,這點都成立。 任何此類不一致的具體性質皆依賴系統,因此未被明確說明。
在 1.7 版本中加入。
Java 文件 java.nio.channels.AsynchronousFileChannel。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| AsynchronousFileChannel() |
初始化此類別的新實例。 |
| AsynchronousFileChannel(IntPtr, JniHandleOwnership) |
一個非同步通道,用於讀取、寫入及操作檔案。 |
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| IsOpen |
一個非同步通道,用於讀取、寫入及操作檔案。 |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
一個非同步通道,用於讀取、寫入及操作檔案。 (繼承來源 JavaObject) |
| JniPeerMembers |
一個非同步通道,用於讀取、寫入及操作檔案。 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| ThresholdClass |
一個非同步通道,用於讀取、寫入及操作檔案。 |
| ThresholdType |
一個非同步通道,用於讀取、寫入及操作檔案。 |
方法
| 名稱 | Description |
|---|---|
| Clone() |
建立並回傳此物件的副本。 (繼承來源 Object) |
| Close() |
關閉這個頻道。 |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
一個非同步通道,用於讀取、寫入及操作檔案。 (繼承來源 JavaObject) |
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
一個非同步通道,用於讀取、寫入及操作檔案。 (繼承來源 JavaObject) |
| Equals(Object) |
一個非同步通道,用於讀取、寫入及操作檔案。 (繼承來源 JavaObject) |
| Equals(Object) |
表示是否有其他物體「等同」於此物。 (繼承來源 Object) |
| Force(Boolean) |
強制將該通道檔案的任何更新寫入包含該通道的儲存裝置。 |
| GetHashCode() |
回傳物件的雜湊碼值。 (繼承來源 Object) |
| JavaFinalize() |
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| Lock() |
取得該頻道檔案的獨家鎖定。 |
| Lock(Int64, Int64, Boolean, Object, ICompletionHandler) |
鎖定該頻道檔案的指定區域。 |
| Lock(Int64, Int64, Boolean) |
鎖定該頻道檔案的指定區域。 |
| Lock(Object, ICompletionHandler) |
取得該頻道檔案的獨家鎖定。 |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| Open(IPath, ICollection<IOpenOption>, IExecutorService, IFileAttribute[]) |
開啟或建立一個用於讀取和/或寫入的檔案,並回傳一個非同步的檔案通道以存取該檔案。 |
| Open(IPath, IOpenOption[]) |
開啟或建立一個用於讀取和/或寫入的檔案,並回傳一個非同步的檔案通道以存取該檔案。 |
| Read(ByteBuffer, Int64, Object, ICompletionHandler) |
從該通道讀取一串位元組到指定緩衝區,從指定的檔案位置開始。 |
| Read(ByteBuffer, Int64) |
從該通道讀取一串位元組到指定緩衝區,從指定的檔案位置開始。 |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
一個非同步通道,用於讀取、寫入及操作檔案。 (繼承來源 JavaObject) |
| Size() |
回傳此通道檔案的當前大小。 |
| ToArray<T>() |
從這個 Java 陣列包裝器建立一個受管理陣列。 (繼承來源 Object) |
| ToString() |
回傳物件的字串表示。 (繼承來源 Object) |
| Truncate(Int64) |
將此通道的檔案截斷至指定大小。 |
| TryLock() |
試圖取得該頻道檔案的專屬鎖。 |
| TryLock(Int64, Int64, Boolean) |
嘗試鎖定該頻道檔案的指定區域。 |
| UnregisterFromRuntime() |
將此 Java 節點從互通執行時中取消註冊。 (繼承來源 Object) |
| Wait() |
導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。 (繼承來源 Object) |
| Wait(Int64, Int32) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Wait(Int64) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Write(ByteBuffer, Int64, Object, ICompletionHandler) |
從指定緩衝區寫入一串位元組到該通道,從指定檔案位置開始。 |
| Write(ByteBuffer, Int64) |
從指定緩衝區寫入一串位元組到該通道,從指定檔案位置開始。 |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
一個非同步通道,用於讀取、寫入及操作檔案。 (繼承來源 JavaObject) |
| IJavaPeerable.Finalized() |
一個非同步通道,用於讀取、寫入及操作檔案。 (繼承來源 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
一個非同步通道,用於讀取、寫入及操作檔案。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
一個非同步通道,用於讀取、寫入及操作檔案。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
一個非同步通道,用於讀取、寫入及操作檔案。 (繼承來源 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
一個非同步通道,用於讀取、寫入及操作檔案。 (繼承來源 JavaObject) |
| IJavaPeerable.UnregisterFromRuntime() |
一個非同步通道,用於讀取、寫入及操作檔案。 |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
一個非同步通道,用於讀取、寫入及操作檔案。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |