对于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我知道这一点,但我已经授予超级用户对应用程序的访问权限,这是否意味着我应该能够读取文件内容?你能给我一个建议吗?