如何將 Stream<Object>
轉換爲InputStream
?目前,我得到的迭代器,並遍歷所有的數據將其轉換爲ByteArray並將其添加到一個InputStream的:流<Object>到InputStream
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
Iterator<MyType> myItr = MyObject.getStream().iterator();
while (myItr.hasNext()) {
oos.writeObject(myItr.next().toString()
.getBytes(StandardCharsets.UTF_8));
}
oos.flush();
oos.close();
InputStream is = new ByteArrayInputStream(bao.toByteArray());
是什麼,雖然這樣做的開銷?如果我的數據流包含1TB的數據,我不會將1TB的數據吸入內存嗎?有沒有更好的方法來實現這一目標?
您確保
Stream
這種InputStream是你需要的嗎?您將對象轉換爲字符串,將它們的UTF-8表示形式作爲字節數組使用,並對這些數組對象使用對象序列化。完全不清楚你想在另一端接收什麼,目前它既不是,對象也不是字符串。您可以直接編寫字符串,也可以使用'Writer'編寫簡單的文本表示,而不用使用對象序列化協議的開銷,但都不會重新創建原始對象。 – Holger