我想从文件进行输入/输出。我的要求是不使用任何java流类。 我已经做了一些研究,很可能我需要使用 FileChannel。
但是,如何在不使用 Java Stream 类的情况下获取特定文件的 FileChannel 对象?
是使用RandomAccessFile吗?通过使用RandomAccessFile类,我是否满足“不使用任何java流类”的要求?
最佳答案
不使用 InputStream
、OutputStream
或 RandomAccessFile
就无法访问 FileChannel
.
和RandomAccessFile
实现了DataInput
和DataOutput
,它们提供了从二进制流读取字节的接口(interface)。所以我相信 RandomAccessFile
也是一种流类。
编辑:
我真的不知道您在什么上下文中将类称为 Stream 类。 RandomAccessFile
仍然可以在您的情况下使用,因为流的读取和写入对用户来说非常抽象。它展示了如何以非顺序方式读取或写入文件。
一般来说,我们将IO流分为以下几类。
字节流处理原始二进制数据的 I/O。
字符流自动处理字符数据的 I/O 处理与本地字符集之间的转换。
缓冲流通过减少数量来优化输入和输出 调用 native API。
扫描和格式化允许程序读取和写入格式化的 文本。
来自命令行的 I/O 描述了标准流和 控制台对象。
数据流处理原始数据类型和字符串的二进制 I/O 值(value)观。
对象流处理对象的二进制 I/O。
但是,RandomAccessFile
不属于上述任何类别。它属于 JDK 7 版本(NIO)中引入的 I/O 机制。它将属于 channel I/O 而不是流 I/O。因此,请使用RandomAccessFile
。
关于不使用 Java 流类的 Java FileChannel 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9714789/