Я пытаюсь сделать этот простой unix ls в Android:
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 Runtime?
listFiles()
из файла (docs.oracle .com/javase/6/docs/api/java/io/File.html) - person gerrytan   schedule 20.03.2013Runtime.getRuntime.exec()
. - person syb0rg   schedule 20.03.2013.sh
с необходимыми командами и запустить этот файл с помощью java. Я думаю, что это та же концепция файла.bat
в Windows. ---› выполнить .bat-файл с Android - person Smit   schedule 20.03.2013