2012-08-29 44 views
0

我正在製作一個從特定位置讀取文件的Java應用程序。該文件的位置是從如何讀取具有不同規範路徑的文件

getCanonicalPath(). 

retrived文件夾中的我面臨的問題是,當我在Eclipse中運行我的應用程序的規範路徑是從Java的醫生看到一個不同。那麼,在將我的應用程序交付給客戶端之前,我應該怎麼做才能確保它看到文件,而不管使用哪個ide /命令提示符來運行應用程序。顯然,將同一文件複製到所有可能的文件夾中以覆蓋getCanonicalPath的不同可能性並不是一個好主意。

感謝

回答

1

其中一個解決辦法是在你的classpath此文件,並從你的classpath中加載它,用這樣的代碼

URL url = getClass().getClassLoader().getResource(path); 
     if(url != null) { 
      try { 
       return new File(url.toURI().getPath()); 
      } catch (URISyntaxException e) { 
       return null; 
      } 
     } 

這是標準的,如果這個文件是一個配置文件。通常在一個標準的java項目佈局中,你把它放在文件夾src/main/resources

如果這是更大的數據文件的,你應該把在配置文件中的路徑,並有不同的配置,一個是你的站,一個用於生產在客戶機上。當然,在這種情況下,配置文件在類路徑中;)。

+1

英雄所見總是信息加載文件ClassLoader ...... –

0

一個常見的解決方案是將文件放在類路徑中的目錄中。如果使用getResource或getResourceAsInputStream,則無論文件在類路徑中的位置如何,都可以找到該文件。如果你使用maven,你可以確定如何設置classpath,無論使用哪個IDE。

0

你應該使用API​​像Test.class.getClassLoader().getResource(name)Test.class.getClassLoader().getResourceAsStream(name)更多可用here

相關問題