行插座輸入流的二進制文件,所以我有一個插座InputStream
在其上服務器發送包含一個數字,後跟一二進制標頭的文本行的數據流構成它正在發送的pdf文件的字節流(在標題部分中指定的長度)。我無法控制的服務器在發送數據後不會關閉數據流,因此我必須從流中讀取確切的字節數,然後從客戶端自行關閉它。我怎樣才能讀取從包括文本標題?:
所以,我的問題是,你怎麼還是有這將讓我輕鬆讀取頭(文字),然後從相同的輸入sream讀取的字節的確切數額任何事業嗎?
我已經嘗試過各種適合頭文件的Reader
類,但是由於我對數據的二進制內容(Reader
使用字符而不是字節)學到的不是很好。公用事業如Apache公地IOUtils
因爲流保持打開/未終止,並在IOUtils.toBytes(inputStream)
嘗試都會掛起不要爲我工作。
該解決方案似乎是與Stream
類而不是Reader
類,但它似乎如此低的水平,必須有公用事業來幫助我。使用DataInputStream
讀取二進制數據似乎很容易,但我很難理解如何讀取標題。有什麼建議?
編輯:這裏是一個示例消息:
http/1.0 200 OK
content-type: application/doc_request
content-length: 18813
session-id: slukdcy71292645678312
remote-addr: slukdcy7
<pdf binary data...>
頭和二進制數據之間的新的線確定的標頭的端部和所述二進制數據的開始。
@Peter Lawrey謝謝,但它的「讀取所有數據」位那很難,因爲我不知道有多少,除了二進制數據,我不知道,直到我讀頭。如果我在二進制數據的末尾讀取數據,它會掛起,因爲套接字是打開/未終止的。 – 2011-02-04 13:39:16