0

現在次のプロセスを使用している既存のJavaコードを変更しています。

  1. FileInputStreamを開いて、ディスクからファイルを読み取ります。
  2. FileInputStreamをDataInputStreamのコンストラクターに渡します
  3. DataInputStreamからバイト配列にデータを読み取ります
  4. バイト配列に基づいてApacheCommonsByteArrayPartSourceを作成します
  5. ByteArrayPartSourceに基づいてApacheCommonsFilePartを作成します。
  6. FilePartに基づいてApacheCommonsMultipartRequestEntityを作成します。
  7. パラメータとしてMultipartRequestEntityを必要とする外部APIを呼び出します。

入力ファイルをスキャンしてテキスト文字列を検索/置換するコードを追加して、このプロセスを変更しようとしています。たとえば、ファイルをスキャンしてパターン「abc」を探し、「xyz」に置き換えます。ただし、この変更をどのステップに追加すべきかわかりません。どのステップを選択するかについて、パフォーマンスに影響はありますか?入力ファイルを一時領域に書き込まずに、メモリ内で検索/置換を行うことは可能ですか?

ありがとう。

4

1 に答える 1

1

読み込んでいるファイルがテキスト ファイルの場合、次のことができます。

  • バイト配列を受け入れる文字列コンストラクターを使用して、手順 3 で取得したバイト配列を文字列に変換します。
  • replaceまたはreplaceAllメソッドを使用して、上記の文字列に対して検索と置換操作を実行します (正規表現の知識が必要になります)。
  • getBytesメソッドを使用して結果をバイト配列に戻す
  • ステップ4から処理を再開

デバッグが困難なエンコーディングの問題を回避するために、文字列コンストラクターと getBytes メソッドの両方でファイル エンコーディングを指定することを強くお勧めします。

...そして、代わりにファイルがバイナリの場合...その中のテキストを検索して置換する方法が思いつきません。申し訳ありません。

于 2013-03-20T13:24:40.360 に答える