簡體   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