Comment puis-je convertir le type Stream<Object>
en InputStream
? À l'heure actuelle, je reçois le iterator et boucle à travers toutes les données de conversion à un byteArray et l'ajouter à un fluxEntrée:Flux <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());
Quelle est la tête de le faire bien? Si mon flux contient un téraoctet de données, est-ce que je ne sucerais pas un téraoctet de données en mémoire? Y a-t-il un meilleur moyen d'y parvenir?
Etes-vous sûr que ce genre de 'InputStream' est ce dont vous avez besoin? Vous convertissez des objets en chaînes, obtenez leur représentation UTF-8 sous la forme de tableaux d'octets et utilisez la sérialisation d'objets pour ces objets tableau. On ne sait pas très bien ce que vous voulez recevoir à l'autre bout, actuellement ce n'est ni les objets ni les cordes. Vous pouvez écrire des chaînes directement à la place ou vous pouvez écrire une représentation textuelle plus simple en utilisant un 'Writer', sans la surcharge du protocole de sérialisation de l'objet, mais aucune ne recréerait les objets originaux. – Holger