繁体   English   中英

java 中的扫描仪 class 出现问题

[英]Problem with Scanner class in java

我使用FileOutputStream class 在文件中写入了一些二进制数据。 现在我想用Scanner class 阅读它,但它不能。 是否可以使用扫描仪 class 读取二进制文件? 如果是,那么如何?

编辑:

I solve it by in.nextline();

要读取二进制文件,您可以将 DataInputStream 或 ByteBuffer 与 NIO 一起使用。

现在我想用扫描仪 class 阅读它,但它不能。

这是一个正确的观察。 Scanner 不会读取二进制数据,它不是为此目的而设计的。 扫描仪希望获得一个实现Readable接口的 object,其合同规定只能返回字符。 它可以接受 InputStream, 但正如 API 所述来自 stream 的字节使用底层平台的默认字符集转换为字符。

是否可以使用扫描仪 class 读取二进制文件? 如果是,那么如何?

按照前面的解释,这是不可能的,除非您以某种方式编写它们,以便上述转换字节的过程返回字符。 如果您需要从 stream 访问二进制数据,则需要避免使用Readers和 Readable 对象。 您需要处理原始InputStreamsFilterInputStreams ,这将返回字节 arrays 或合适的对象。 在您的特定情况下,您将需要一个FileInputStream

提示:

  1. 使用 Java 中的字符时使用 Reader 和Writer对象。
  2. 避免将上述内容用于二进制数据。 请改用 InputStreams 和 OutputStreams。
  3. 了解如何在 java.io 中实现装饰器模式

您是否阅读过 API 文档?

一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串。

http://download.oracle.com/javase/1,5.0/docs/api/java/util/Scanner.html

这可能会帮助您:

使用 Java 读取结构化二进制文件的最佳方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM