質問: java初心者です。 設計の段階で質問したいと思います。ご教示願えないでしょうか あるディレクトリに入っている複数のXMLファイルがあるとします。 それを、Stringでディレクトリパスを指定し、一つのStream入力で読み込むためには SequenceInputStreamを使って処理するしかないのでしょうか? たとえば あるディレクトリ("C:\\test\\tes\\sample") に次の3つのXMLファイルが入っているとします。 sample.xml sample_1.xml sample_2.xml その3つのXMLファイルを"C:\\test\\tes\\sample"で指定したstream一つで一気に読み込み、 sample.xmlは、テキスト文字列の先頭にaを付けたテキスト内容をSystem.out.printlnで表示し sample_1.xmlはテキスト文字列の <と />で囲まれた部分を消した内容をSystem.out.printlnで表示し それぞれ sample.xml(文字列先頭にaがついたもの) sample_2.txt(囲まれた部分を消す) sample_next.xml(内容はそのまま) として "C:\\test\\tes\\sample\\next ディレクトリにstreamを用いて出力したいと考えています。 アプローチ例等ございましたら、ご教示願いたいと思います。
回答: 設計として期待されている内容をストリーム一つで行う考え方は誤っていると考えます。 別個のStreamにて処理すべきです。 SequenceInputStreamも使いません。 ストリームを一つにすることは、複数に分割されたファイルを1つのファイルとして扱うことを意味します。 このことは裏を返せば、複数に分割されたどのファイルを処理しているかを意識しないということです。 ファイルによって個々に処理を分けたいのならば、個々のファイルを意識できなければなりません。 ストリームを一つにしてしまっては個々のファイルは意識できなくなるので、期待した結果は得られません。 ストリームはファイル毎に別個のStreamで処理すべきです。 ストリームを一つにすることが効果的な処理は、ファイルの結合を伴う処理です。 1ファイルでは大きすぎるファイルが固定サイズ等で分割された状態で存在する場合、分割された1ファイルとして結合する処理を作成し1ファイルの形に戻してからStreamで読み込みますが、SequenceInputStreamならば結合する処理が必要なくなり、結合用のディスク領域も必要なくなります。