我想在Android文件系统中搜索包含特定信息的文本文件(例如,设备的电池电流和电压)。
我尝试使用Astro文件浏览器,但它的搜索功能似乎不支持深度搜索(也在子目录中搜索)。
我还尝试使用ADB将我想要搜索的目录(/ sys /目录)复制到我的PC的硬盘驱动器,但不幸的是,这不起作用,因为大多数文件由于丢失而未被复制阅读权限。
您是否没有任何工作解决方案来浏览文件系统(从PC或通过Android应用程序)?
答案 0 :(得分:1)
每个制造商将文件放在不同的地方(或至少可以)。尝试使用API访问此信息:
有一个意图,ACTION_BATTERY_CHANGED
至于浏览文件系统,Astro工作正常 - 但如果操作系统没有授予你权限,除非你手机根据,否则你将无法读取它。
答案 1 :(得分:1)
我现在实现了一个简单的,愚蠢的Java方法,可以从Eclipse ADT执行以在文件系统中搜索它并且它可以工作(但是,慢慢地):
public static List<File> getFilesOfDirectory(File dir, String fileNamePart) {
List<File> result;
if (dir.exists() && dir.isDirectory()
&& !dir.getAbsolutePath().contains("root")
&& dir.getAbsolutePath().split("/").length < 10) {
Log.i("fileSearch", "search in directory " + dir.getAbsolutePath());
File[] files = dir.listFiles();
if (files != null)
result = new ArrayList<File>(Arrays.asList(files));
else
result = new ArrayList<File>();
}
else
result = Collections.emptyList();
/* Filter for interesting files. */
List<File> filteredResult = new ArrayList<File>();
for (File file : result) {
if (file.getAbsolutePath().toLowerCase()
.contains(fileNamePart.toLowerCase()))
filteredResult.add(file);
// no else.
}
/* Search recursively. */
List<File> furtherResults = new ArrayList<File>();
for (File file : result) {
if (file.isDirectory())
furtherResults.addAll(getFilesOfDirectory(file, fileNamePart));
// no else.
}
// end for.
filteredResult.addAll(furtherResults);
return filteredResult;
}
可以使用表示要搜索的根目录的文件对象(例如,新文件(“/”))和表示要找到的文件名的字符串(例如,“电压”)来调用该方法。