我需要以二进制文件形式提供数据作为十六进制字符串。当前的实现将整个文件加载到内存中,将其转换为十六进制字符串并将十六进制字符串作为字节数组提供给另一个组件。将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