タイプ Stream<Object>
をInputStream
に変換するにはどうすればよいですか?現在、私はInputStreamの先のByteArrayに変換し、それを追加するデータのすべてを反復子とループを得る:ストリーム<Object>〜入力ストリーム
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());
しかしこれを行うためのオーバーヘッドは何ですか?ストリームにテラバイトのデータが含まれている場合は、テラバイトのデータをメモリに吸い込まないでください。これを達成するためのより良い方法はありますか?
はあなたが確認していますメモリにセット全体をロードすることはありませんよう
Stream
オフオブジェクトを引っ張って、InputStream
が読み込まれるStream
上の端末操作を呼び出し、この種'InputStream'の必要は何ですか?オブジェクトを文字列に変換し、UTF-8表現をバイト配列として取得し、これらの配列オブジェクトにオブジェクト直列化を使用します。もう一方の側で受け取ってほしいことはまったく不明ですが、現在でもオブジェクトでも文字列でもありません。代わりに文字列を直接書くこともできますし、オブジェクト直列化プロトコルのオーバヘッドなしにWriterを使って簡単なテキスト表現を書くこともできますが、元のオブジェクトを再作成することはできません。 – Holger