2015-09-03 66 views
0

請問我真的需要關於如何解析由 返回的結果「ls -l」命令 我真的需要這個來獲取列表和詳細信息私人目錄(例如「/ data/data」目錄)在用戶被授予訪問權後,我的文件管理器應用程序如何解析由`ls -l`使用shell命令返回的結果 - Android

以下是執行命令後返回的結果示例 getRunTime()。exec (「ls -l/data/data」);

u0_a192 @ Infinix_X507:/ $ LS -l /存儲/ sdcard0 drwxrwx ---根sdcard_r 2015年8月14日22點23分2GO drwxrwx ---根sdcard_r 2015年8月15日11時26分360 drwxrwx - X根sdcard_r 2015年8月13日10:25的Android drwxrwx ---根sdcard_r 2015年8月29日21時09分AppProjects drwxrwx ---根sdcard_r 2014年1月1日00:00助理 drwxrwx --- root sdcard_r 2015-08-18 10:44 Camera360 drwxrwx --- root sdcard_r 2015-08-11 21:29 DCIM -rw-rw ---- root sdcard_r 808 2015-08-19 05: 36 Document.txt drwxrwx --- root sdcard_r 2015-08-30 07:19下載 drwxrwx --- root sdcard_r 2015-08-17 19:25調頻錄音 drwxrwx --- root sdcard_r 2015-08-24 17:18 Flash分享 drwxrwx --- root sdcard_r 2015-08-24 10:03 KingMaster drwxrwx --- root sdcard_r 2015-08-14 04:39 Kingroot drwxrwx --- root sdcard_r 2015-08-21 06:49 ManifestViewer drwxrwx --- root sdcard_r 2015-08-30 19:25電影 drwxrwx --- root sdcard_r 2015-08-30 19:25音樂 drwxrwx --- root sdcard_r 2015-08-13 06:55 OGWhatsApp drwxrwx --- root sdcard_r 2015-08-23 14:00 OGWhatsApp舊版本 drwxrwx- - root sdcard_r 2015-08-11 17:00圖片 drwxrwx --- root sdcard_r 2015-08-23 10:59記錄 drwxrwx ---根sdcard_r 2014-01-01 00:00鈴聲 drwxrwx --- root sdcard_r 2015-08-24 17:18 ShareSDK drwxrwx --- root sdcard_r 2015-08-21 14:41簡單的Android服務器 drwxrwx --- root sdcard_r 2015-08-23 11:19 VidMate drwxrwx --- root sdcard_r 2015-08-14 04:00 WhatsApp drwxrwx --- root sdcard_r 2015-08-30 14:55 Wps drwxrwx --- root sdcard_r 2015-08-30 17:19 bluetooth drwxrwx --- root sdcard_r 2015-08-24 15:11 com.facebook.orca -rw-rw ---- root sdcard_r 2999645 2015-08-30 14:55 demo .mp4 drwxrwx --- root sdcard_r 2015-08-29 17:11 dianxin drwxrwx --- root sdcard_r 2015-08-29 21:29文檔 -rw-rw ---- root sdcard_r 112 2015-08- 15 07:41 e_config drwxrwx --- root sdcard_r 2015-08-18 07:00 iQuran drwxrwx --- root sdcard_r 2015-08-23 14:00 icloudzone drwxrwx --- root sdcard_r 2015-08-14 11: 53 jamb_cbt_science -rw-rw ---- root sdcard_r 112 2015-08-13 20:24 kr-stock-conf drwxrwx --- root sdcard_r 2015-08-11 17:45 media drwxrwx --- root sdcard_r 2015-08-23 14:00 mtklog drwxrwx --- root sdcard_r 2014-01-01 01:00 obb -rw-rw ---- root sdcard_r 1132508 2015-08-14 11:54 pq_commercial.pdf - rw-rw ---- root sdcard_r 6 2015-08-23 13:44 qs.pid drwxrwx --- root sdcard_r 2015-08-16 07:33 romtoolbox drwxrwx --- root sdcard_r 2015-08-24 10 :03 tbslog drwxrwx --- root sdcard_r 2015-08-17 04:25騰訊 -rw-rw ----根sdcard_r 69565980 2015-08-23 17:01更新。拉鍊 drwxrwx ---根sdcard_r 2015年8月14日22:26 Viber的 -RW-RW ----根sdcard_r 8514230二零一五年八月三十零日10:43 vlc.apk u0_a192 @ Infinix_X507:/ $

我已經看到了類似的解決方案,但在使用ftp_rawlist()函數PHP,但我想一個Java/Android解決方案請....

我知道這需要正則表達式或模式... 您的幫助將不勝感激

+0

每一個文件列表應該在一個新的行。用換行符分割輸出並從那裏解析。 – MeetTitan

回答

0

首先,你read the output line by line

然後你split each line by whitespaces

if (str[0] == 'd') // Directory 
    String[] parsed = str.split("\\s+", 6); 
else 
    String[] parsed = str.split("\\s+", 7); 

那麼你有一個很好的字符串數組,其中parsed[6]是文件名,或者parsed[5]如果它是一個目錄,因爲ls -l不會爲目錄打印尺寸。它不會將文件名與空格混淆,作爲額外的好處。

+0

非常感謝,您的答案確實有效,但對於既不以'd'也不以' - '開頭的文件,我遇到了以'l'開頭的問題 – user3289335

0

您正在努力,比它需要; Android有一個File類此建在非常功能性:

File f = new File(path);   
File files[] = f.listFiles(); 

這會給你在這條道路文件和文件夾的數組。關於File的文檔可以在這裏找到: http://www.developer.android.com/reference/java/io/File.html

+0

謝謝,我使用它作爲普通文件列表,但File類無法列出私有目錄,特別是使用su命令 – user3289335

+0

如果應用程序以root身份運行(它必須以root身份執行ls'),它應該不需要'su'命令。你在談什麼私人目錄? – Sector95

+0

即使在授予超級用戶權限時,應用程序itslef也不能在root帳戶下運行 - 它使用'su'shell命令在root帳戶下執行腳本。 – pelya

0

你試圖解析什麼數據?如果你正在尋找一個特定的字符串,你可以使用grep。 (至少在Linux上,你可以使用grep,我假設它包含在Android的爲好,但我還沒有嘗試過了自己。)

ls -l | grep targetString

+0

只需添加我在Windows上使用「cygwin」做同樣的事情,這是一個在Windows上模擬linux命令的絕佳工具。 – darthvading