Javaの助けを借りて検索と置換を行いたいです。
ファイル名とその内容を含む TreeMap があります。単語とその意味を含む別の TreeMap があります。
ファイルの内容を検索し、見つかった単語をその意味に置き換えたい。
ありがとう
PS: 課題ではありません。簡易読み込みファイルと置換機能を使用しました。しかし、私はそれを行うための迅速な方法が必要です。サンプルコードまたは参照。高く評価されます。
問題が圧倒的な場合に役立つ一般的な開発アドバイスをいくつか紹介します。
まず、リストを書き留めます。これは、問題を解決すると思われるアルゴリズムです。あなたの場合は試してみてください:
次に、これらの各ステップに進み、それを強化します。最初のもののためにあなたはすべきです
各ステップをどのように実行するかがわかるまで、現在「JustCoding」を想定できない各ステップに対してこれを実行します。
これが完了したら、リストから1つのことを実行する非常に基本的なアプリケーションを作成することをお勧めします。たとえば、ファイルを開きます。ここでは、junitテストを作成したり、メインでテストを作成したりするのに非常に役立ちます。ファイルを開き、そこから読み取ることができることを確認してください。
この時点で、コードに追加し続けます。少し追加してから、再コンパイル/再テストします。5年間コーディングするまですべての行を再テストしてから、2行または3行ごとに移動します。
コードをテストするためにテストを更新し続けます。古いテストを破った場合は、それを書き直して、捨てないでください。
繰り返します。
これがお役に立てば幸いです。
基本は次のとおりです。
この例は、TreeMapだけでなく、マップインターフェイスを実装するすべてのクラスで機能します。
public void searchAndReplace(Map<File, byte[]> fileToContentMap, Map<String, String> wordToDefinitionMap) {
// for each file
for (File f : fileToContentMap.keySet()) {
// get the file's contents
String contents = new String(fileToContentMap.get(f));
// replace the contents with definitions
for (String word : wordToDefinitionMap.keySet()) {
contents = contents.replaceAll(word, wordToDefinitionMap.get(word));
}
// make sure to update the contents in the array
fileToContentMap.put(f, contents.getBytes());
// note, remember to update the physical file as well
}
}
すべてのファイルの内容を格納するために TreeMap を使用しません+ .
とにかくコンテンツを読む必要があるので、最初にそれらすべてを保存することに利点はありません+。
一度に 1 つのファイルを読み取り、処理して保存します。
Java の NIO パッケージを見てください。NIOの例のページには、ファイルのリスト (Grep.java) を検索する例があります。
+ {他の場所} が必要ない場合