2012-05-21 126 views
0

我正在與某人一起工作,我們需要能夠加載和保存文件。目前我們這樣做:從eclipse自加載文件

robot1.getComputer().loadAndCompileProgram(new File("C:\\Projects\\IO\\program1.txt")); 

但是,這要求他和我都有這個程序在完全相同的位置。我們寧願將其存儲在我們的Eclipse項目,並能夠加載的文件不管是什麼程序1的「滿」的位置是在我們的電腦.. 我們願意做這樣的事情:

robot1.getComputer().loadAndCompileProgram(new File("/Project D3 1.15/Progs/program1.txt")); 

項目D3 1.15是Java項目,程序1的Eclipse中的完整字符串是Eclipse的路徑。但是這不起作用。是否有可能做我們想要的?

回答

0

嘗試new File("./Progs/program1.txt")new File("Progs/program1.txt"")

除此之外:如果您有找出如何定位在不同的IDE文件的問題,剛剛創建的主要方法簡單的類是這樣的:

public class ExpMainClass { 
    public static void main(final String[] args) throws Exception { 
     System.out.println(new File(".").getAbsolutePath()); 
    } 
} 

和運行它 - 這應該有助於理解IDE執行應用程序的位置。

0

Eclipse項目名稱和計算機上的真實路徑存在差異。 可能有一個名爲Foo的項目,其路徑是C:\ Projects \ Bar。

但是,可以這樣做,因爲從Eclipse執行時,您位於當前目錄中。

只是這樣做

robot1.getComputer().loadAndCompileProgram(new File("Progs/program1.txt")); 

或者(如果要指定項目名稱)

robot1.getComputer().loadAndCompileProgram(new File("../Project D3 1.15/Progs/program1.txt")); 
+0

這是行不通的。 「..」是指當前的上下文。當前上下文(aka系統路徑)是運行你的程序的java.exe(或者他們在linux上的任何東西)的路徑...所以「..」指向類似「C:\ Java」的那個 –

+0

這是錯誤的,它確實有效。當從Eclipse啓動時(這是OP所說的),當前的上下文是Eclipse項目的根目錄。如果項目名稱與根目錄相同,那麼上面的兩行代碼都可以工作,否則只有第一行。 – Alex

+0

此外,這很容易測試。創建一個名爲foobar的eclipse項目,創建一個其主要方法爲'FileUtils.writeStringToFile(new File(「../ foobar/baz.txt」),「hi!」);'的類。現在執行程序並使用eclipse刷新項目。您將在'foobar'項目中看到一個名爲'baz.txt'的新文件。 – Alex

0

嗯,你可以充分利用Java系統屬性,如user.dir獲得,直到工作區然後構建路徑。

new File(System.getProperty("user.dir") + File.separator + "program1.txt")

這會期待文件是您的工作空間內直接存在,如果通過Eclipse中運行。

這將是一個真正的平臺無關的做事方式。

0

你需要的是這樣的:

String myProjectDir = System.getProperty("user.dir"); 
robot1.getComputer().loadAndCompileProgram(new File(myProjectDir +"/myFolder/program1.txt")); 

的JVM環境變量「user.dir來」分到項目目錄(對於從Eclipse中運行的程序)