java中的Scanner类问题

时间:2011-06-12 09:05:10

标签: java java.util.scanner

我使用FileOutputStream类在文件中写了一些二进制数据。现在我想用Scanner类来阅读它,但它不能。是否可以使用Scanner类读取二进制文件?如果是,那怎么办?

编辑:

I solve it by in.nextline();

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

  

现在我想用Scanner类阅读它,但它不能。

这是一个正确的观察。扫描仪不会读取二进制数据,它不是为此目的而设计的。扫描程序希望提供一个实现Readable接口的对象,该接口的合同指定只返回字符。它可以接受一个I​​nputStream,but as the API states使用底层平台的默认字符集将流中的字节转换为字符。

  

是否可以使用Scanner类读取二进制文件?如果是,那怎么办?

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

<强>提示:

  1. 在使用Java中的字符时使用Reader和Writer对象。
  2. 避免将上述内容用于二进制数据。改为使用InputStreams和OutputStreams。
  3. 了解decorator pattern is implemented in java.io
  4. 的方式

答案 2 :(得分:1)

您是否阅读过API文档?

  

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

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

这可能会对您有所帮助:

Best way to read structured binary files with Java