1

Guava Charstreams InputSupplier を入力として受け取り、Charstreams OutputSupplier を出力として使用する grep タイプのフィルターを作成したいと思います。特定の正規表現を満たす場合にのみ、inputsupplier から outputsupplier に行を渡す必要があります。

これを行うための正しい設計パターン/パラダイムは何ですか?

次のように行フィルターを実行すると思います。

InputSupplier<InputStreamReader> ris = CharStreams.newReaderSupplier(....
CharStreams.readLines(ris, new LineProcessor<....

LineProcessor メソッドの実装。

しかし、 LineProcessor.getResult() は何を返す必要がありますか?失敗の成功だけですか? 周囲の関数で「最終的な」出力サプライヤーを使用する必要がありますか?

または、私は完全に間違ったAPI /アプローチを使用しています!!

最良の方法を示すための少しの疑似コードは大歓迎です。

ご提案いただきありがとうございます。

4

1 に答える 1

0

CharStreams.readLinesは を返しますList<String>。したがって、ソース コードによると、LineProcessor に行を蓄積してから結果を返すように要求しています。私の意見では、あなたの LineReader は以下のようになります

new LineProcessor<List<String>>() {

    List<String> result = Lists.newArrayList();

    public boolean processLine(String line) {
      if (line matches regex){
        result.add(line.trim());
      }

      return true;//continue processing

    }

    public List<String> getResult() {return result;}

  });
于 2013-01-11T08:36:20.123 に答える