Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于android数据/数据设备为根目录,Files.list返回null_Android_Root_Android File - Fatal编程技术网

对于android数据/数据设备为根目录,Files.list返回null

对于android数据/数据设备为根目录,Files.list返回null,android,root,android-file,Android,Root,Android File,我试图在/data/data/中生成一个特定目录中所有文件的列表,例如/data/data/com.package.ect,以便对它们进行压缩。我的设备已根目录,我已将超级用户授权给我的应用程序。当将路径传递到目录时,它将通过if语句,因此它识别出我试图访问的是一个目录,而File.list()返回null。我想我仍然缺乏某种许可 /** * Traverse a directory and get all files, * and add the file into fil

我试图在
/data/data/
中生成一个特定目录中所有文件的列表,例如
/data/data/com.package.ect
,以便对它们进行压缩。我的设备已根目录,我已将超级用户授权给我的应用程序。当将路径传递到目录时,它将通过if语句,因此它识别出我试图访问的是一个目录,而File.list()返回null。我想我仍然缺乏某种许可

/**
     * Traverse a directory and get all files,
     * and add the file into fileList
     * @param node file or directory
     */
    public void generateFileList(File node) {

        //add file only
        if (node.isFile()) {
            fileList.add(generateZipEntry(node.getAbsoluteFile().toString()));
        }

        if (node.isDirectory()) {
            String[] subNote = node.list();
            for (String filename : subNote) {
                generateFileList(new File(node, filename));
            }
        }
    }
*编辑:在调用generateFileList的位置按请求编辑

public void zipDirectory(String outputPath){

        byte[] buffer = new byte[1024];

        try{
            checkStorageDirExists(SDCARD, STORAGE_LOCATION);
            generateFileList(new File(path));
            FileOutputStream fos = new FileOutputStream(SDCARD + STORAGE_LOCATION + outputPath);
            ZipOutputStream zos = new ZipOutputStream(fos);
            setZipFileName(path);

            Log.i(TAG, "Output to Zip : " + outputPath);

            for(String file : this.fileList){

                System.out.println("File Added : " + file);
                ZipEntry ze= new ZipEntry(file);
                zos.putNextEntry(ze);

                FileInputStream in =
                        new FileInputStream(path + "/" + file);

                int len;
                while ((len = in.read(buffer)) > 0) {
                    zos.write(buffer, 0, len);
                }

                in.close();
            }

            zos.closeEntry();
            zos.close();

            Log.i(TAG, "Zip of " + getZipFileName() +" Completed");
        }catch(IOException ex){
            ex.printStackTrace();
        }

显示之前的准备工作,并显示如何调用generateFileList()。将设备“根化”不会以任何方式更改应用程序的主进程可以执行的操作,而只会更改帮助程序可执行文件可以执行的操作。@greenapps有关如何调用generateFileList()的信息,请参阅我的编辑。path变量是在初始化my Directory类时设置的,它是字符串“/data/data/”与PackageManager.getInstallerPackage中的包名连接在一起。“之前的准备”是指应用程序如何请求根访问权限?谢谢。我现在看够了。但是Chris“申请的主要过程”是什么?“helper可执行文件”我的应用程序在哪里有它们?@ChrisStratton我知道这一点,但我已经授予超级用户对应用程序的访问权限,这是否意味着我应该能够读取文件内容?你能给我一个建议吗?