2012-05-21 14 views
10

Po prostu chcę wykonać mój plik z określonego folderu. w moim przypadku/data/data/my-package/files /. Próbowałem:Wykonaj plik ze zdefiniowanego katalogu za pomocą Runtime.getRuntime(). Exec

Process process2=Runtime.getRuntime().exec("cd /data/data/my-package/files/"); 
process2.waitFor(); 
process2=Runtime.getRuntime().exec("./myfile"); 

To nie działa. czy ktoś mógłby mi powiedzieć, proszę, właściwą drogę. Dzięki

+0

robi '.... exec ("/data/data/my-package/files/myfile ");' działa? – zapl

+0

to działa, ale tutaj chcę wykonać mój plik z określonego folderu, ponieważ generuje nowy plik. dzięki – 113408

+0

Możesz zobaczyć [moja odpowiedź] [http://stackoverflow.com/questions/6811522/changing-the-working-of-command-from-java/42281455#42281455] –

Odpowiedz

21

Powinno być możliwe, aby zadzwonić do pliku wykonywalnego z określonego katalogu roboczego przy użyciu Runtime.exec(String command, String[] envp, File dir)

następująco:

Process process2=Runtime.getRuntime().exec("/data/data/my-package/files/myfile", 
     null, new File("/data/data/my-package/files")); 

może bez pełnej ścieżki do myfile

Process process2=Runtime.getRuntime().exec("myfile", 
     null, new File("/data/data/my-package/files")); 

Context#getFilesDir() zamiast hardcoding ścieżka powinna również działać i jest bezpieczniejsza/czystsza niż określanie ścieżki nie jest gwarantowane, że /data/data/.. jest zawsze właściwą ścieżką dla wszystkich urządzeń.

Process process2=Runtime.getRuntime().exec("myfile", 
     null, getFilesDir())); 

Problem z cd somewhere to, że katalog jest zmieniany dla innego procesu, tak drugie wywołanie exec w nowy proces nie widzi zmian.

+0

Dzięki, to działa :) – 113408

+1

Świetna odpowiedź, zaoszczędziłem mój czas. –

Powiązane problemy