如何使用shell命令-Android解析`ls-l`返回的结果
请我真的需要帮助如何解析结果返回的 “ls-l”命令 我真的需要它来获取我的文件管理器应用程序中的私有目录(例如“/data/data”dir)的列表和详细信息,在用户被授予su访问权限之后 下面是执行命令后预期返回的结果示例 getRunTime().exec(“ls-l/data/data”) 我已经看到了一个类似的解决方案,但是在php中使用了ftp_rawlist()函数,但是我想要一个Java/Android解决方案,请 我知道这需要正则表达式或模式…等等。。如何使用shell命令-Android解析`ls-l`返回的结果,android,shell-exec,Android,Shell Exec,请我真的需要帮助如何解析结果返回的 “ls-l”命令 我真的需要它来获取我的文件管理器应用程序中的私有目录(例如“/data/data”dir)的列表和详细信息,在用户被授予su访问权限之后 下面是执行命令后预期返回的结果示例 getRunTime().exec(“ls-l/data/data”) 我已经看到了一个类似的解决方案,但是在php中使用了ftp_rawlist()函数,但是我想要一个Java/Android解决方案,请 我知道这需要正则表达式或模式…等等。。 你的帮助将得到高度赞赏你
你的帮助将得到高度赞赏你让事情变得比需要的更困难;Android有一个
文件
类,内置了以下功能:
File f = new File(path);
File files[] = f.listFiles();
这将为您提供该路径中的文件和文件夹数组。有关文件的文档可在此处找到:
您试图解析哪些数据?如果要查找特定字符串,可以使用grep。(至少,在Linux上你可以使用grep,我假设它也包含在Android中,但我自己还没有尝试过。)
ls-l | grep targetString
首先,你
然后你:
然后是一个很好的字符串数组,其中parsed[6]
是文件名,或者parsed[5]
如果是目录,因为ls-l
不会打印目录的大小。作为额外的奖励,它不会把文件名和空格弄乱。谢谢,我使用它来创建普通的文件列表,但是file类不能列出私有目录,特别是使用su命令。如果应用程序以root身份运行(无论如何,它必须以root身份执行ls
),它应该不需要su
命令。您具体说的是什么私有目录?App itslef不能在root帐户下运行,即使授予超级用户权限-它使用“su”shell命令在root帐户下执行脚本。@Sector95,设备不需要是root才能运行ls
。此外,开发人员确实需要调用su
,并保持shell打开以root身份运行二进制文件。用换行符拆分输出并从那里进行解析。正如我使用“cygwin”对Windows做的相同操作一样,这是一个在Windows上模拟linux命令的极好工具。非常感谢,您的回答确实有效,但对于既不以“d”或“-”开头的文件,我遇到了一些以“l”开头的文件的问题
File f = new File(path);
File files[] = f.listFiles();
if (str[0] == 'd') // Directory
String[] parsed = str.split("\\s+", 6);
else
String[] parsed = str.split("\\s+", 7);