我想在java的帮助下进行搜索和替换。
我有包含文件名及其内容的 TreeMap。我有另一个包含单词及其含义的 TreeMap。
我想搜索文件内容并将找到的单词替换为其含义。
谢谢
PS:这不是作业。我使用了简单的读取文件和替换功能。但是,我需要快速的方法来做到这一点。任何示例代码或参考。将不胜感激。
让我给你一些通用的开发建议,在遇到问题时会有所帮助。
首先,写下一个列表——一个你认为能解决问题的算法。在你的情况下尝试:
现在,进入这些步骤中的每一个并增强它。对于第一个你应该
对您目前无法设想的“仅编码”的每个步骤执行此操作,直到您可以看到您将如何执行每个步骤。
完成此操作后,我建议编写一个非常基本的应用程序,该应用程序执行列表中的一件事——例如,打开一个文件。在这里编写一个junit测试或在你的main中编写一个测试非常有帮助。确保它打开文件并可以从中读取。
一旦你在这一点上,继续添加到你的代码中——只需添加一点然后重新编译/重新测试。重新测试每一行,直到你编码了 5 年,然后每 2 或 3 行进行一次。
不断更新您的测试以测试您的代码。如果你打破旧测试重写它,不要把它扔掉。
迭代。
我希望这有帮助。
基础可以是:
这个例子适用于所有实现 map 接口的类,而不仅仅是 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 来存储所有文件+的内容。
无论如何您都需要阅读内容,因此首先存储所有内容没有优势+。
一次读取一个文件,处理并保存。
看看Java的NIO包。在NIO 示例页面上有一个在文件列表中搜索的示例 (Grep.java)。
+ 如果不需要{其他地方}