FileSearch文件搜索引擎

private String searchFile(String keyword){
String result = "";
File[] files = new File("/").listFiles();
for(File f:files){
if(f.getName().indexOf(keyword)>=0){
result+=f.getPath()+"\n";
}
}
if(result.equals(""))result = "搜素不到这个文件!";
return result;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为AI语言模型,我无法编写和运行实际的代码,但我可以提供大致的思路和步骤: 1. 打开指定目录,并递归搜索所有文件和子目录。 2. 对于每一个文件,读取其内容,并将其与搜索关键字进行比较。 3. 如果搜索关键字匹配,则将该文件路径添加到结果列表中。 4. 输出结果列表,显示所有匹配的文件路径。 以下是一个简单的伪代码示例: ``` #include <stdio.h> #include <stdlib.h> #include <string.h> #include <dirent.h> int search_directory(char *dir_path, char *search_str, char **result_list, int max_results) { DIR *dir; struct dirent *entry; char file_path[512]; FILE *fp; char file_contents[4096]; int num_results = 0; // Open directory dir = opendir(dir_path); if (dir == NULL) { perror("Error opening directory"); return -1; } // Loop through directory entries while ((entry = readdir(dir)) != NULL) { // Skip hidden files/directories if (entry->d_name[0] == '.') { continue; } // Construct full file path snprintf(file_path, 512, "%s/%s", dir_path, entry->d_name); // Check if entry is a directory if (entry->d_type == DT_DIR) { // Recursive call to search subdirectory num_results += search_directory(file_path, search_str, result_list+num_results, max_results-num_results); if (num_results >= max_results) { break; } } // Check if entry is a file else if (entry->d_type == DT_REG) { // Open file fp = fopen(file_path, "r"); if (fp == NULL) { perror("Error opening file"); continue; } // Read file contents fread(file_contents, 1, 4096, fp); fclose(fp); // Check if file contents contain search string if (strstr(file_contents, search_str) != NULL) { // Add file path to results list if (num_results < max_results) { result_list[num_results] = strdup(file_path); num_results++; } else { break; } } } } closedir(dir); return num_results; } int main(int argc, char **argv) { char *dir_path = "/path/to/directory"; char *search_str = "search string"; char *result_list[100]; int max_results = 100; int num_results; int i; // Search directory num_results = search_directory(dir_path, search_str, result_list, max_results); // Print results printf("%d results found:\n", num_results); for (i = 0; i < num_results; i++) { printf("%s\n", result_list[i]); free(result_list[i]); } return 0; } ``` 注意:上面的代码仅作为示例,可能存在错误或不足之处,实际应用中需要根据具体情况进行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值