深入搜索android文件系统中的文本文件

时间:2011-08-24 08:15:30

标签: android search filesystems sys

我想在Android文件系统中搜索包含特定信息的文本文件(例如,设备的电池电流和电压)。

我尝试使用Astro文件浏览器,但它的搜索功能似乎不支持深度搜索(也在子目录中搜索)。

我还尝试使用ADB将我想要搜索的目录(/ sys /目录)复制到我的PC的硬盘驱动器,但不幸的是,这不起作用,因为大多数文件由于丢失而未被复制阅读权限。

您是否没有任何工作解决方案来浏览文件系统(从PC或通过Android应用程序)?

2 个答案:

答案 0 :(得分:1)

每个制造商将文件放在不同的地方(或至少可以)。尝试使用API​​访问此信息:

有一个意图,ACTION_BATTERY_CHANGED

BatteryManager

至于浏览文件系统,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;
}

可以使用表示要搜索的根目录的文件对象(例如,新文件(“/”))和表示要找到的文件名的字符串(例如,“电压”)来调用该方法。