FileChannel 类

定义

用于读取、写入、映射和操作文件的通道。

[Android.Runtime.Register("java/nio/channels/FileChannel", DoNotGenerateAcw=true)]
public abstract class FileChannel : Java.Nio.Channels.Spi.AbstractInterruptibleChannel, IDisposable, Java.Interop.IJavaPeerable, Java.Nio.Channels.IGatheringByteChannel, Java.Nio.Channels.IScatteringByteChannel, Java.Nio.Channels.ISeekableByteChannel
[<Android.Runtime.Register("java/nio/channels/FileChannel", DoNotGenerateAcw=true)>]
type FileChannel = class
    inherit AbstractInterruptibleChannel
    interface IByteChannel
    interface IReadableByteChannel
    interface IChannel
    interface ICloseable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface IWritableByteChannel
    interface IGatheringByteChannel
    interface IScatteringByteChannel
    interface ISeekableByteChannel
继承
属性
实现

注解

用于读取、写入、映射和操作文件的通道。

文件通道是 SeekableByteChannel 连接到文件的 。 它的文件中有一个 当前位置 ,可以是 #position() <i>queried</i>#position(long) <i>modified</i>。 文件本身包含一个长度可变的字节序列,这些字节可以读取和写入,并且可以查询其当前 #size <i>size</i> 字节。 当写入的字节超过其当前大小时,文件大小会增加;文件的大小在 为 #truncate <i>truncated</i>时减小。 该文件可能还具有一些关联的 元数据 ,例如访问权限、内容类型和上次修改时间;此类不定义元数据访问的方法。

除了熟悉的字节通道读取、写入和关闭操作外,此类还定义了以下特定于文件的操作:

<ul>

<李>

字节可以是 #read(ByteBuffer, long) read#write(ByteBuffer, long) <i>written</i> 位于文件中的绝对位置,但不会影响通道的当前位置。

</李>

<李>

文件的某个区域可能 #map <i>mapped</i> 直接进入内存;对于大型文件,这通常比调用常用 readwrite 方法更有效。

</李>

<李>

对文件进行的汇报可能#force <i>forced out</i>指向基础存储设备,确保数据在系统崩溃时不会丢失。

</李>

<李>

字节可以从文件 #transferTo <i>to some other channel</i>、 和 #transferFrom <i>vice versa</i>传输,其方式可由许多操作系统优化为直接与文件系统缓存进行非常快速的传输。

</李>

<李>

文件的区域可能 FileLock <i>locked</i> 禁止其他程序访问。

</李>

</ul>

文件通道可供多个并发线程安全使用。 Channel#close close可以随时调用 方法,如 接口所指定Channel。 在任何给定时间,只有一个涉及通道位置或可以更改其文件大小的操作正在进行;尝试启动第二个此类操作,而第一个操作仍在进行中将阻止,直到第一个操作完成。 其他操作,特别是采取明确立场的操作,可以同时进行:它们是否确实这样做取决于基础实现,因此未指定。

此类的实例提供的文件的视图保证与同一程序中其他实例提供的同一文件的其他视图一致。 但是,由于基础操作系统执行的缓存以及网络文件系统协议引起的延迟,此类实例提供的视图可能与其他并发运行的程序看到的视图一致。 无论编写这些其他程序时采用何种语言,以及它们是在同一台计算机上还是在其他计算机上运行,都是如此。 任何此类不一致性的确切性质取决于系统,因此未指定。

通过调用此类定义的方法之 #open open 一来创建文件通道。 也可以通过调用getChannel该对象的 方法从现有的 java.io.FileInputStream#getChannel FileInputStreamjava.io.FileOutputStream#getChannel FileOutputStreamjava.io.RandomAccessFile#getChannel RandomAccessFile 对象获取文件通道,该方法返回连接到同一基础文件的文件通道。 如果从现有流或随机访问文件获取文件通道,则文件通道的状态与方法 getChannel 返回通道的 对象的状态紧密相连。 更改通道的位置(无论是显式更改还是通过读取或写入字节)将更改原始对象的文件位置,反之亦然。 通过文件通道更改文件的长度将更改通过原始对象看到的长度,反之亦然。 通过写入字节更改文件的内容将更改原始对象看到的内容,反之亦然。

“open-mode”>

在各个点上,此类指定“打开以供读取”、“打开以供写入”或“打开以供读取和写入”的实例是必需的。 通过 java.io.FileInputStream#getChannel getChannel 实例的 方法获取的 java.io.FileInputStream 通道将打开以供读取。 通过 java.io.FileOutputStream#getChannel getChannel 实例的 方法获取的 java.io.FileOutputStream 通道将打开以供写入。 最后,如果实例是使用 模式"r"创建的,则通过 java.io.RandomAccessFile#getChannel getChannel 实例的 方法获取的java.io.RandomAccessFile通道将打开以供读取;如果实例是使用 模式 "rw"创建的,则打开用于读取和写入的通道。

“append-mode”>

打开以供写入的文件通道可能处于 追加模式,例如,如果它是从通过调用 java.io.FileOutputStream#FileOutputStream(java.io.File,boolean) FileOutputStream(File,boolean) 构造函数和传递 true 第二个参数创建的文件输出流中获取的。 在此模式下,每次调用相对写入操作都会先将位置推进到文件末尾,然后写入请求的数据。 位置的提升和数据写入是否在单个原子操作中完成,取决于系统,因此未指定。

在 1.4 中添加。

java.nio.channels.FileChannelJava 文档。

此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。

构造函数

FileChannel()

初始化此类的新实例。

FileChannel(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

属性

Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
IsOpen

如果此通道处于打开状态,则返回 true。

(继承自 AbstractInterruptibleChannel)
JniIdentityHashCode

用于读取、写入、映射和操作文件的通道。

(继承自 Object)
JniPeerMembers

用于读取、写入、映射和操作文件的通道。

PeerReference

用于读取、写入、映射和操作文件的通道。

(继承自 Object)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。

ThresholdType

此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。

方法

Begin()

标记可能无限期阻止的 I/O 操作的开始。

(继承自 AbstractInterruptibleChannel)
Clone()

创建并返回此对象的副本。

(继承自 Object)
Close()

关闭此通道。

(继承自 AbstractInterruptibleChannel)
Dispose()

用于读取、写入、映射和操作文件的通道。

(继承自 Object)
Dispose(Boolean)

用于读取、写入、映射和操作文件的通道。

(继承自 Object)
End(Boolean)

标记可能无限期阻止的 I/O 操作的结束。

(继承自 AbstractInterruptibleChannel)
Equals(Object)

指示某个其他对象是否“等于”此对象。

(继承自 Object)
Force(Boolean)

强制将此通道文件的任何更新写入包含该文件的存储设备。

ForceAsync(Boolean)

用于读取、写入、映射和操作文件的通道。

GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
ImplCloseChannel()

关闭此通道。

(继承自 AbstractInterruptibleChannel)
JavaFinalize()

当垃圾回收确定不再引用对象时,由垃圾回收器对对象调用。

(继承自 Object)
Lock()

获取此通道文件的排他锁。

Lock(Int64, Int64, Boolean)

获取此通道文件的给定区域的锁。

Map(FileChannel+MapMode, Int64, Int64)

将此通道文件的区域直接映射到内存中。

Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
Open(IPath, ICollection<IOpenOption>, IFileAttribute[])

打开或创建文件,返回用于访问该文件的文件通道。

Open(IPath, IOpenOption[])

打开或创建文件,返回用于访问该文件的文件通道。

Position()

返回此通道的文件位置。

Position(Int64)

设置此通道的文件位置。

Read(ByteBuffer)

将字节序列从此通道读入给定缓冲区。

Read(ByteBuffer, Int64)

从给定文件位置开始,将此通道中的字节序列读入给定缓冲区。

Read(ByteBuffer[])

将字节序列从此通道读入给定缓冲区。

Read(ByteBuffer[], Int32, Int32)

将字节序列从此通道读取到给定缓冲区的子序列中。

ReadAsync(ByteBuffer)

用于读取、写入、映射和操作文件的通道。

ReadAsync(ByteBuffer, Int64)

用于读取、写入、映射和操作文件的通道。

ReadAsync(ByteBuffer[])

用于读取、写入、映射和操作文件的通道。

ReadAsync(ByteBuffer[], Int32, Int32)

用于读取、写入、映射和操作文件的通道。

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
Size()

返回此通道文件的当前大小。

ToArray<T>()

用于读取、写入、映射和操作文件的通道。

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
TransferFrom(IReadableByteChannel, Int64, Int64)

将字节从给定的可读字节通道传输到此通道的 文件中。

TransferFromAsync(IReadableByteChannel, Int64, Int64)

用于读取、写入、映射和操作文件的通道。

TransferTo(Int64, Int64, IWritableByteChannel)

将字节从此通道的文件传输到给定的可写字节通道。

TransferToAsync(Int64, Int64, IWritableByteChannel)

用于读取、写入、映射和操作文件的通道。

Truncate(Int64)

将此通道的文件截断为给定大小。

TruncateAsync(Int64)

用于读取、写入、映射和操作文件的通道。

TryLock()

尝试获取此通道文件的排他锁。

TryLock(Int64, Int64, Boolean)

尝试获取此通道文件的给定区域的锁。

UnregisterFromRuntime()

用于读取、写入、映射和操作文件的通道。

(继承自 Object)
Wait()

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>。<>

(继承自 Object)
Wait(Int64)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)
Wait(Int64, Int32)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)
Write(ByteBuffer)

将字节序列从给定缓冲区写入此通道。

Write(ByteBuffer, Int64)

从给定文件位置开始,从给定缓冲区向此通道写入字节序列。

Write(ByteBuffer[])

从给定缓冲区将字节序列写入此通道。

Write(ByteBuffer[], Int32, Int32)

从给定缓冲区的子序列向此通道写入字节序列。

WriteAsync(ByteBuffer)

用于读取、写入、映射和操作文件的通道。

WriteAsync(ByteBuffer, Int64)

用于读取、写入、映射和操作文件的通道。

WriteAsync(ByteBuffer[])

用于读取、写入、映射和操作文件的通道。

WriteAsync(ByteBuffer[], Int32, Int32)

用于读取、写入、映射和操作文件的通道。

显式接口实现

IJavaPeerable.Disposed()

用于读取、写入、映射和操作文件的通道。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

用于读取、写入、映射和操作文件的通道。

(继承自 Object)
IJavaPeerable.Finalized()

用于读取、写入、映射和操作文件的通道。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

用于读取、写入、映射和操作文件的通道。

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

用于读取、写入、映射和操作文件的通道。

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

用于读取、写入、映射和操作文件的通道。

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

用于读取、写入、映射和操作文件的通道。

(继承自 Object)
ISeekableByteChannel.Position(Int64)

用于读取、写入、映射和操作文件的通道。

ISeekableByteChannel.Truncate(Int64)

用于读取、写入、映射和操作文件的通道。

扩展方法

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

用于读取、写入、映射和操作文件的通道。

GetJniTypeName(IJavaPeerable)

用于读取、写入、映射和操作文件的通道。

WriteAsync(IGatheringByteChannel, ByteBuffer[])

用于读取、写入、映射和操作文件的通道。

WriteAsync(IGatheringByteChannel, ByteBuffer[], Int32, Int32)

用于读取、写入、映射和操作文件的通道。

ReadAsync(IReadableByteChannel, ByteBuffer)

用于读取、写入、映射和操作文件的通道。

ReadAsync(IScatteringByteChannel, ByteBuffer[])

用于读取、写入、映射和操作文件的通道。

ReadAsync(IScatteringByteChannel, ByteBuffer[], Int32, Int32)

用于读取、写入、映射和操作文件的通道。

WriteAsync(IWritableByteChannel, ByteBuffer)

用于读取、写入、映射和操作文件的通道。

适用于