【发布时间】:2016-07-09 01:19:29
【问题描述】:
下面的代码可以搜索值,但现在我必须替换正在搜索的值。请帮助我是 java 新手。这应该可以作为任何具有搜索和替换功能的文本编辑器。
public class TestClass {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);
System.out.println("Enter Path to be searched");
String directory = scanner.next();
System.out.println("Enter String to be searched");
String searchString = scanner.next();
searchDirectory(directory, searchString);
}
static void searchDirectory(String directory, String searchString){
File dir = new File(directory);
if(!dir.isDirectory()){
System.err.println("PATH ENTERED is not directory");
return;
}
try{
for (File file : dir.listFiles()) {
if(!file.isDirectory()){
String fileName = file.getName().toLowerCase();
if (fileName.endsWith((".txt"))
||fileName.endsWith((".log"))) {
@SuppressWarnings("resource")
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
int Count =0,
index = -1;
while ((line = br.readLine()) != null) {
Count++;
index = line.indexOf(searchString);
if(index != -1){
System.out.println("Text '"+searchString+"' Found at position "+index +" in file "+ fileName +" at Line No "+Count);
}
}
}
}else{
System.err.println("TestClass.searchDirectory(DIR)"+file.getAbsolutePath());
// searchDirectory(file.getAbsolutePath(), searchString);
}
}
}catch(Exception e){
e.printStackTrace();
}
}
}
【问题讨论】:
-
替换值是什么意思?你不能打电话给
searchDirectory(directory, someOtherString);吗? -
我猜你的意思是搜索和替换操作?如果是这样,您必须将文件的内容保留在内存中,直到您完成阅读,然后替换搜索字符串(可能在存储时这样做)并最终覆盖文件的内容。如果文件较大,您可以使用临时文件写入,然后用临时文件替换原始文件(或读取临时文件并将内容写入原始文件以保留权限、创建时间戳等)。跨度>
-
我的意思是,如果要搜索一个名为“安全”的词,我可以在目录中搜索它 bt 现在我想用其他名称替换搜索值
-
在这里查看更多信息:stackoverflow.com/questions/3935791/…
-
您要:1- 用新词再次搜索? 2- 将文件中与搜索词匹配的词替换为新词?请选择一个:)
标签: java