有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法在文件浏览器中查看所有文件

我在一个文件浏览器应用程序中遇到了一个奇怪的问题,我无法查看实际存在的每个文件/文件夹。似乎它们被过滤掉了。根资源管理器似乎可以找到文件,但我的应用程序无法找到。有什么想法吗?是的,我的手机是根


共 (2) 个答案

  1. # 1 楼答案

    File类无法工作的原因是您没有读取这些目录的权限。获得访问权限的唯一方法是读/写这些目录,即使用根权限,并且要使用根权限,必须运行基于linux的命令

    我不知道如何准确地完成整个过程,但您应该使用^{}

    通常要运行基于linux的命令,您需要执行Runtime.getRuntime.exec("command");,但是使用RootTools,整个过程非常简单,并且更容易获得命令的结果

    如果您愿意,我可以尝试进一步解释如何手动操作(执行Runtime.getRuntime.exec("command");),或者如果您在Wiki上浏览RootTools并将其与应用程序集成,您可能会明白这一点

    如果你还有其他问题,我很乐意尽我所能帮助你

    编辑: 我看到了您的答案,因此您现在似乎对如何运行命令有了很好的理解。不过,RootTools会让一切变得更简单

  2. # 2 楼答案

    好的,我已经研究了更多的shell命令,这个方法很有效,但是这是最有效的方法吗

    public void ls(String directory) {  
                    Process process = null;
    
                    try {
                        process = Runtime.getRuntime().exec("ls " + directory);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }    
    
                    int read;
                    BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
                    char[] buffer = new char[4096];
                    StringBuilder output = new StringBuilder();
    
                    try {
                        while ((read = reader.read(buffer)) > 0) {
                            output.append(buffer, 0, read);
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
    
                    try {
                        reader.close();
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
    
                    try {
                        process.waitFor();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }       
    
                    Log.d("Files", output.toString());
            }