多次執行我試圖在Android中做這個簡單的UNIX LS:表演上運行的exec
cd /data
然後
ls
它應該返回/ data文件夾的所有內容。
我這個編碼:
try {
String line;
Process p = Runtime.getRuntime().exec(new String[] { "ls /data"});
BufferedReader in = new BufferedReader(
new InputStreamReader(p.getInputStream()));
while ((line = in.readLine()) != null) {
Log.d("debugging", line);
}
in.close();
}
catch (Exception e) {
e.printStackTrace();
}
我面對目前的問題是,我不能做多單指令多一次。例如,如果我寫ls /data
它沒有返回。看起來他不喜歡空間。
一切正常,如果我只寫一個字如「ls」,這是返回根目錄的列表:
03-19 22:51:59.241: D/debugging(16274): acct
03-19 22:51:59.241: D/debugging(16274): cache
03-19 22:51:59.241: D/debugging(16274): config
03-19 22:51:59.241: D/debugging(16274): crashtag
03-19 22:51:59.241: D/debugging(16274): d
03-19 22:51:59.241: D/debugging(16274): data
03-19 22:51:59.241: D/debugging(16274): default.prop
03-19 22:51:59.241: D/debugging(16274): dev
03-19 22:51:59.241: D/debugging(16274): etc
03-19 22:51:59.241: D/debugging(16274): fstab
03-19 22:51:59.241: D/debugging(16274): init
03-19 22:51:59.241: D/debugging(16274): init.clrdex.sh
03-19 22:51:59.241: D/debugging(16274): init.goldfish.rc
03-19 22:51:59.241: D/debugging(16274): init.hostapd.sh
03-19 22:51:59.241: D/debugging(16274): init.rc
03-19 22:51:59.241: D/debugging(16274): init.semc.rc
03-19 22:51:59.241: D/debugging(16274): init.usbmode.sh
03-19 22:51:59.241: D/debugging(16274): logo.rle
03-19 22:51:59.241: D/debugging(16274): mnt
03-19 22:51:59.241: D/debugging(16274): mr.log
03-19 22:51:59.241: D/debugging(16274): proc
03-19 22:51:59.241: D/debugging(16274): root
03-19 22:51:59.241: D/debugging(16274): sbin
03-19 22:51:59.241: D/debugging(16274): sdcard
03-19 22:51:59.241: D/debugging(16274): sys
03-19 22:51:59.241: D/debugging(16274): system
03-19 22:51:59.241: D/debugging(16274): ueventd.goldfish.rc
03-19 22:51:59.241: D/debugging(16274): ueventd.rc
03-19 22:51:59.241: D/debugging(16274): ueventd.semc.rc
03-19 22:51:59.241: D/debugging(16274): vendor
有人提到我試過,以填補多個命令該數組,但它什麼都不返回。空白。
{"ls","ls"} //this should return twice ls result.
任何想法如何「連接」在Android運行時命令?
你確實需要System.exec嗎?您是否考慮過使用File(http://docs.oracle.com/javase/6/docs/api/java/io/File.html)中的'listFiles()'方法 – gerrytan 2013-03-19 22:02:23
我會使用[ProcessBuilder](http: //docs.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html)而不是'Runtime.getRuntime.exec()'。 – syb0rg 2013-03-19 22:04:05
我這樣做,因爲這不是我最後想要做的。我想調用一個系統程序,但是如果我無法在「一次」處理兩個不同的命令,我將無法運行這些程序 – Reinherd 2013-03-19 22:04:43