[英]Getting InputStream from OMElement
我嘗試了以下樣本[1]; 但是由於我的OMElement太大(我正在將文件(800MB)轉換為OMelement
,它來自另一個進程),因此我面臨以下問題,
誰能為我指出正確的解決方案?
[1]
BufferedReader in = null;
ByteArrayOutputStream baos = null;
InputStream is = null;
try {
baos = new ByteArrayOutputStream();
fileContent.serialize(baos);
is = new ByteArrayInputStream(baos.toByteArray());
in = new BufferedReader(new InputStreamReader(is));
不幸的是,您的問題並未提供對要解決的實際問題的清晰描述。 相反,它描述了一個您認為可以解決問題的問題。 因此,我只能根據您對Ian Roberts的評論來重構問題。
如果我對這些評論的解釋正確,那么問題如下。 您有一個XML文檔,其中包含帶有長字符序列的元素,該元素由多行構成:
<some_element>
line 1
line 2
line 3
...
line N
</some_element>
您希望逐行處理元素的內容,但是N很大,因此您需要找到一種內存有效的方式來做到這一點,即避免將整個內容加載到內存中的方法。
您提供的代碼段表明,嘗試解決該問題時方向錯誤。 該代碼對表示some_element
的OMElement
序列化,然后從序列化的輸出中創建InputStream
/ Reader
。 但是,它也將包含some_element
的開始和結束標記,這不是您想要的。 相反,您只對元素的內容感興趣。 如果查看OMElement
接口,則可以看到它實際上定義了一個將內容作為Reader
返回的方法。 它稱為getTextAsStream
, Javadoc解釋了如何以內存使用量為O(1)而不是O(N)的方式使用該方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.