2011-01-06 104 views
6

所以,我想能夠編寫一個應用程序,可以打開並顯示logcat消息,dmesg,並且還能夠運行命令,如'ls''貓「回聲」'cd'。Android Runtime.getRuntime()。exec()導航通過目錄

如果我做到以下幾點:

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; 
     } 

我什麼也沒得到兩個 「全面」 和 「文本」

任何想法?

回答

4

可以與哪些文件夾應列出提供的路徑執行LS

Runtime.getRuntime().exec(new String[] { "ls", "\\tmp"}); 
2

當前工作目錄與當前進程關聯。當您執行(「cd tmp」)時,您正在創建一個進程,將其目錄更改爲「tmp」,然後該進程退出。父進程的工作目錄不會更改。

有關changing the current working directory in Java的更一般性討論,請參閱此處。

1

如何編寫一個shell文件來檢查這個文件中的文件和所有其他實現是否存在,並將其添加到sdcard並使用getRuntimr.exec()從java觸發shell文件,也可以傳遞參數給它。