在我的節目,我想執行不同的工作目錄中的某些功能(我已經加載JAR與文件工作在當前目錄下,並希望執行它)運行可運行不同的工作目錄
有沒有一種辦法通過設置工作目錄執行Runnable或Thread或其他對象?
在我的節目,我想執行不同的工作目錄中的某些功能(我已經加載JAR與文件工作在當前目錄下,並希望執行它)運行可運行不同的工作目錄
有沒有一種辦法通過設置工作目錄執行Runnable或Thread或其他對象?
不,工作目錄與操作系統級進程相關聯,您不能在程序的一部分中對其進行更改。你將不得不改變目錄的獲取方式。
(我假設你現在要麼獲得與System.getProperty(「user.dir來」的目錄),或調用代碼,同樣從環境中獲取的目錄。)
澄清:你當然可以改變的全局屬性,但隨後它在所有線程中都會更改。我認爲這不是你想要的,因爲你談論線程。
它可以工作,如果你設置了user.dir
與System.setProperty()
我想你可以用下面的例子更改:
public static void main(String[] args) {
System.out.println("main: " + new File(".").getAbsolutePath());
System.setProperty("user.dir", "C:/");
Runnable r = new Runnable() {
public void run() {
System.out.println("child: "+new File(".").getAbsolutePath());
}
};
new Thread(r).start();
System.out.println("main: "+new File(".").getAbsolutePath());
}
這將產生:
主:C: \ Projekte \ Techtests。
main:C:\。
孩子:C:\。
您無法爲線程設置工作目錄,但是您可以使用不同的工作目錄創建新進程。 這裏檢查一個例子: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html
你也可以創建一個具有使用目錄概念的特定類型的線程。 例如:
public class MyThread extends Thread
{
private final String workingDir;
public MyThread(String workingDir)
{
this.workingDir = workingDir;
}
public void run()
{
//use the workingDir variable to access the current working directory
}
}
看到http://stackoverflow.com/questions/6811522/changing-the-working-directory-of-command-from-java – JoseK
它的運行系統,但我有'對象過程'方法 – skayred