不使用 Java 流类的 Java FileChannel 类

标签 java nio

我想从文件进行输入/输出。我的要求是不使用任何java流类。 我已经做了一些研究,很可能我需要使用 FileChannel。

但是,如何在不使用 Java Stream 类的情况下获取特定文件的 FileChannel 对象?

是使用RandomAccessFile吗?通过使用RandomAccessFile类,我是否满足“不使用任何java流类”的要求?

最佳答案

不使用 InputStreamOutputStreamRandomAccessFile 就无法访问 FileChannel .

RandomAccessFile实现了DataInputDataOutput,它们提供了从二进制流读取字节的接口(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/

相关文章:

java - Spring MVC - 基于注释的映射的 AlwaysUseFullPath 配置

Java 图像出现放大

Java从重定向的 'friendly' url获取下载的文件名

java - 在 Java 中与基于文本的游戏中的其他对象交互

java - 将密码传递给junitcore

java - 搜索大量有序字符串

java - NIO2 AsynchronousSocketChannel 完全使用 CompletionHandler 进行读/写

java.nio.channels.DatagramChannel 基本 UDP RX 客户端连接

JDK 1.3 中的 Java native 访问

java.nio.file.Files.isWriteable 不同意 java.io.File.canWrite()