我使用Sparkjava開發了一個簡單的應用程序。我使用Intellij,當我運行測試或在本地運行應用程序時,所有資源都是文件。有沒有更簡單的方法來讀取* .jar或文件系統?
但是,當我部署時,整個事情作爲一個jar文件運行。因此,我需要一種方法來從文件系統或jar中讀取我的資源,具體取決於應用程序的啓動方式。下面的代碼可以完成工作,但看起來很笨拙:
String startedOffFile = new java.io.File(Main.class.getProtectionDomain()
.getCodeSource()
.getLocation()
.getPath())
.getName();
InputStream inputStream;
if(startedOffFile.endsWith(".jar")) {
ClassLoader cl = PropertiesParser.class.getClassLoader();
inputStream = cl.getResourceAsStream("myapp.dev.properties");
} else {
inputStream = new FileInputStream(filename);
}
是否有更清潔/更簡單的方法?
對我來說很好。 –
爲什麼不總是從類路徑加載資源(即使用ClassLoader.getResourceAsStream()),而不是使用文件IO?資源是否位於類路徑中的目錄中,或位於類路徑中的jar中對您的代碼沒有影響。 –
http://docs.oracle.com/javase/6/docs/api/java/lang/ClassLoader.html#getResourceAsStream%28java.lang.String%29 –