在Android中解析ls 命令得到目录列表的方法

在android中我们可以通过

Process process=Runtime.getRuntime().exec("ls -l /sdcard/dcim/camera");执行linux下的命令

InputStream in=process.getInputStream();得到命令执行结果的二进制流

 ls -l xxxx命令的执行结果一般格式为:

drwxr-xr-x  2  root  root    4096 04-27 11:44 eclipse
drwxrwxrwx  2  root  root    4096 04-20 21:22 myfolder
drwxr-xr-x  2  root  root    4096 04-27 12:58 sdk
-rw-r--r--  1  root  root      82 04-22 15:37 setting.conf
drwxrwxrwx  2  root  root    4096 04-20 21:22 tmp
drwxrwxrwx  2  root  root    4096 04-21 14:58 tool
-rwxr--r--  1  Onglu Onglu 544256 04-22 14:05 yoyoplayer for Android 1.5.doc

现在的需求是从上面的执行结果中得到每个项纵向排列的值:

方法:如:String str="drwxrwxrwx  2  root  root    4096 04-20 21:22 myfolder"

由于空格数不确定,采用String[] array=str.split(" ");//根据单个空格符分割,一般都会出问题

完整解决方案:

1,按照空格分割字符串,多个空格作为一个空格对字符串进行分割,这里需要用到正则表达式

String[] array=str.split("\\s{1,}")

2,将字符串中的多个空格替换为一个空格,然后根据空格获得数组

String [] array=str.replace("{2,}", " ").split(" ")

你可能感兴趣的:(android,linux,正则表达式,String)