FileChannel 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
用于读取、写入、映射和操作文件的通道。
[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>
直接进入内存;对于大型文件,这通常比调用常用 read
或 write
方法更有效。
</李>
<李>
对文件进行的汇报可能#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 FileInputStream
、 java.io.FileOutputStream#getChannel FileOutputStream
或 java.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.FileChannel
Java 文档。
此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。
构造函数
FileChannel() |
初始化此类的新实例。 |
FileChannel(IntPtr, JniHandleOwnership) |
创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。 |
属性
Class |
返回此 |
Handle |
基础 Android 实例的句柄。 (继承自 Object) |
IsOpen |
如果此通道处于打开状态,则返回 true。 (继承自 AbstractInterruptibleChannel) |
JniIdentityHashCode |
用于读取、写入、映射和操作文件的通道。 (继承自 Object) |
JniPeerMembers |
用于读取、写入、映射和操作文件的通道。 |
PeerReference |
用于读取、写入、映射和操作文件的通道。 (继承自 Object) |
ThresholdClass |
此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。 |
ThresholdType |
此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。 |
方法
显式接口实现
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) |
用于读取、写入、映射和操作文件的通道。 |