我需要以二進制文件形式提供數據作爲十六進制字符串。當前的實現將整個文件加載到內存中,將其轉換爲十六進制字符串並將十六進制字符串作爲字節數組提供給另一個組件。將FileInputStream轉換成一個返回十六進制的流
我現在面臨的問題是,這個文件有時非常大,所以我得到「OutOfMemoryException」。該組件還接受InputStream作爲輸入,所以我想我會將我的FileInputStream封裝到另一個以十六進制字符串形式返回文件的流中。
然而,我不知道如何做到這一點,雖然InputStream的子類看起來很簡單,但我可以看到這是非常容易出錯的讀取方法和特殊情況。如果這個車輪已經存在,我也不會重新發明它。
對此提出建議?
爲什麼你首先將* text *數據(一個十六進制*字符串*)作爲字節數組傳遞?你可以逐塊傳遞數據嗎?基本上我們需要在這裏瞭解更多關於「其他組件」的信息· – 2013-03-21 11:16:52
我將數據傳遞給一個Web服務器,該服務器希望在發佈請求中將二進制數據格式化爲十六進制。我目前正在使用ByteArrayEntity:http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/entity/ByteArrayEntity.html,但我希望使用InputStreamEntity代替。 – monoceres 2013-03-21 11:19:51
但是,我可以通過十六進制字符串作爲一個StringEntity來代替,但這不是我的代碼.. :) – monoceres 2013-03-21 11:25:50