2012-05-21 30 views
10

Tôi chỉ muốn thực thi tệp của mình từ một thư mục cụ thể. trong trường hợp của tôi/dữ liệu/dữ liệu/my-package/files /. Vì vậy, tôi đã thử:thực thi tệp từ thư mục được xác định bằng Runtime.getRuntime(). Exec

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

Nó không hoạt động. bất cứ ai có thể cho tôi biết xin vui lòng đúng cách để làm điều đó. Cảm ơn

+0

thực hiện '.... exec ("/data/data/my-package/files/myfile ");' hoạt động? – zapl

+0

nó hoạt động nhưng ở đây tôi muốn thực thi tệp của tôi từ thư mục được chỉ định vì nó tạo tệp mới. cảm ơn – 113408

+0

Bạn có thể xem [câu trả lời của tôi] [http://stackoverflow.com/questions/6811522/changing-the-working-directory-of-command-from-java/42281455#42281455] –

Trả lời

21

Nó nên có thể gọi thực thi với một thư mục làm việc cụ thể sử dụng Runtime.exec(String command, String[] envp, File dir)

như sau:

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

có lẽ không có đường dẫn đầy đủ đến myfile

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

Context#getFilesDir() thay của hardcoding đường dẫn nên làm việc quá và an toàn hơn/sạch hơn so với chỉ định đường dẫn chính mình s không đảm bảo rằng /data/data/.. luôn là đường dẫn chính xác cho tất cả các thiết bị.

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

Vấn đề với cd somewhere là thư mục được thay đổi cho một quá trình khác nhau để cuộc gọi thứ hai để exec trong một quá trình mới không thấy sự thay đổi.

+0

Cảm ơn, nó hoạt động :) – 113408

+1

Câu trả lời tuyệt vời, đã tiết kiệm thời gian của tôi. –

Các vấn đề liên quan