Android Runtime.getRuntime (). Exec () для навигации по каталогам - PullRequest
6 голосов
/ 06 января 2011

Итак, я хочу написать приложение, которое может включать и отображать сообщения logcat, dmesg, а также запускать такие команды, как 'ls' 'cat' 'echo' 'cd.'

Если я сделаю следующее:

nativeProc = Runtime.getRuntime().exec("ls\n");
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(nativeProc.getOutputStream()));
        BufferedReader in = new BufferedReader(new InputStreamReader(nativeProc.getInputStream()));
        String line = null;

        while ((line = in.readLine()) != null) {  
            full = full + "\n" + line;
        }

Я могу поместить текст "полный" в текстовое представление и увидеть корневой каталог.

Однако это все, что я могу сделать.Допустим, я хочу найти каталог и перейти к нему, у меня возникли проблемы.

Так что если я сделаю это:

nativeProc = Runtime.getRuntime().exec("ls\n");
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(nativeProc.getOutputStream()));
        BufferedReader in = new BufferedReader(new InputStreamReader(nativeProc.getInputStream()));
        String line = null;

        while ((line = in.readLine()) != null) {  
            full = full + "\n" + line;
        }
        /* Code here to confirm the existing of a directory*/


        nativeProc = Runtime.getRuntime().exec("cd tmp\n");
        BufferedReader in2 = new BufferedReader(new InputStreamReader(nativeProc.getInputStream()));
        line = null;
        String test = "\nStart1:\n";
        while ((line = in2.readLine()) != null) {  
            test = test + "\n" + line;
        }

Я ничего не получу ни за "полный", ни за"текст"

Есть идеи?

Ответы [ 3 ]

4 голосов
/ 27 февраля 2012

Вы можете выполнить ls с указанным путем, для которого должны быть перечислены папки

Runtime.getRuntime().exec(new String[] { "ls", "\\tmp"});
2 голосов
/ 08 января 2011

Текущий рабочий каталог связан с текущим процессом. Когда вы исполняете ("cd tmp"), вы создаете процесс, меняете его каталог на "tmp", и затем процесс завершается. Рабочий каталог родительского процесса не изменяется.

См. Это для более общего обсуждения изменения текущего рабочего каталога в Java .

1 голос
/ 27 февраля 2012

Как насчет написания файла оболочки, который проверяет наличие файла и всех других реализаций в этом файле и добавляет его в SDCard и запускает файл оболочки из Java с помощью getRuntimr.exec (). Вы также можете передать ему параметры.

...