Existe-t-il un moyen simple de créer un Java InputStream composé de plusieurs fichiers ajoutés?

J’ai un composant “processeur” capable de traiter un seul fichier, InputStream, Reader, etc.

Pour diverses raisons, je me retrouve avec plusieurs fichiers volumineux au lieu d’un fichier volumineux.

Existe-t-il un moyen de créer un stream d’entrée (ou un lecteur) qui: “ajoute” de manière transparente tous ces fichiers de sorte que: 1) le “processeur” ne sache pas où un fichier a commencé ou s’est terminé 2) Aucune modification ne se produit dans le système de fichiers (par exemple, pas d’ajout réel de fichiers) 3) Chaque fichier est lu dans l’ordre afin que je ne paie pas le coût de leur chargement en mémoire et de leur ajout avant que le processeur ne commence à lire?

Je suis sûr qu’il est possible d’écrire quelque chose comme ça, mais je me demande s’il en existe déjà une; ça fait un moment que je n’ai pas basé sur des fichiers IO.

SequenceInputStream concatène plusieurs stream.

 List opened = new ArrayList(files.size()); for (File f : files) opened.add(new FileInputStream(f)); InputStream is = new SequenceInputStream(Collections.enumeration(opened)); 

La gestion des exceptions (non illustrée) lors de l’ouverture de chaque fichier est importante; assurez-vous que tous les fichiers seront définitivement fermés, même si l’opération est annulée avant la création de SequenceInputStream .

Vous pouvez utiliser quelque chose comme SequenceInputStream pour lire un stream après l’autre.