質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

3150閲覧

ストリームで一つのディレクトリの複数のテキストファイルを読み込んで個別に処理したい

kamekawashinta

総合スコア39

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/05/30 06:32

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を用いて出力したいと考えています。

アプローチ例等ございましたら、ご教示願いたいと思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2016/05/30 06:44

3つのXMLファイルに対して、それぞれ異なる処理を施すのであれば、それぞれ別のstreamで読み込んで個々に処理する方が素直なように思われます。 1つのstreamで読み込む事の意義は、どこにあるのでしょうか?
kamekawashinta

2016/05/30 07:00

一つのstreamで渡されるものに、複数のXMLファイルが存在している状況を想定しています。
guest

回答1

0

ベストアンサー

設計として期待されている内容をストリーム一つで行う考え方は誤っていると考えます。
別個のStreamにて処理すべきです。
SequenceInputStreamも使いません。

ストリームを一つにすることは、複数に分割されたファイルを1つのファイルとして扱うことを意味します。
このことは裏を返せば、複数に分割されたどのファイルを処理しているかを意識しないということです。

ファイルによって個々に処理を分けたいのならば、個々のファイルを意識できなければなりません。
ストリームを一つにしてしまっては個々のファイルは意識できなくなるので、期待した結果は得られません。
ストリームはファイル毎に別個のStreamで処理すべきです。

ストリームを一つにすることが効果的な処理は、ファイルの結合を伴う処理です。
1ファイルでは大きすぎるファイルが固定サイズ等で分割された状態で存在する場合、分割された1ファイルとして結合する処理を作成し1ファイルの形に戻してからStreamで読み込みますが、SequenceInputStreamならば結合する処理が必要なくなり、結合用のディスク領域も必要なくなります。

投稿2016/05/30 12:41

Hiroshi-Aoki

総合スコア804

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kamekawashinta

2016/05/31 08:27

自分のストリームの理解がおかしかったことに気づきました。 ご指摘、ご指導いただき、ありがとうございました。 またご機会ありましたら、よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問