今天有涉及到一些配置文件,文件个数有几百个吧,唯一的区别就是每个文件的文件内容都有一个id,唯一的id.配置的文件名称同功能是对应的,也就是说,一个文件名称对应着一个id.对应着一个功能
我不知道文件名称是什么意思,只能拿到程序debug时的一个id,但我又想知道这个id所在的配置文件内容,但是我不知道文件名是什么,所有就产生了这个demo
在指定的文件路径下查找所有的文件内容,获取其中包含制定内容的文件的路径
python code
def find_by_val(path,val):
'''
根据内容查找制定路径下的文件内容,并输入文件路径
:param path: 路径
:param val: 内容
:return:
'''
if not path:
path = input("请输入文件路径")
if not val:
val = input("请输入要查找的内容")
import os
if not os.path.exists(path):
return "请核对路径(%s)是否正确!" % path
if not val.replace(" ",""):
return "请输入查找内容(不能是空格)"
file_paths=[]
for dirpath,dirs,files in os.walk(path):
for file in files:
file_path = os.path.join(dirpath,file)
if val in open(file_path,"r",encoding="utf8").read():
file_paths.append(file_path)
return file_paths
java code
/**
* 检索指定路径下的指定内容,并返回路径
*
* @param path 制定路径
* @param val 内容
* @return 路径集合
*/
public static Map<String, Object> findByVal(String path, String val) {
Map<String, Object> resultMap = new HashMap<>();
ArrayList<String> resultfilePahts = new ArrayList<>();
resultMap.put("success", false);
if (path == null) {
resultMap.put("msg", "请设置路径");
} else if (val == null) {
resultMap.put("msg", "请设置查找内容");
} else {
// 判断路径是否存在
File file = new File(path);
if ((file.exists())) {
// 读取该路径下的所有文件路径,包括子级路径下的文件
List<String> filePaths = getFilePath(file);
for (String filePath : filePaths) {
// 读取文件内容
file = new File(filePath);
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String s = "";
read:
while ((s = br.readLine()) != null) {
if (s.indexOf(val) >= 0) {
resultfilePahts.add(filePath);
break read;
}
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
resultMap.put("success",true);
resultMap.put("data",resultfilePahts);
} else {
resultMap.put("msg", "对不起路径不存在");
}
}
return resultMap;
}
/**
* 返回该路径下的所有文件路径
*
* @param file
* @return
*/
public static List<String> getFilePath(File file) {
List<String> filePaths = new ArrayList<>();
if (file.exists()) {
// 获取路径下所有子路径
File[] files = file.listFiles();
if (files.length >= 1) {
for (File file1 : files) {
if (file1.isFile()) {
filePaths.add(file1.getPath());
} else {
List<String> filePath = getFilePath(file1);
filePaths.addAll(filePath);
}
}
}
}
return filePaths;
}