2017-06-12 104 views
0

我使用MAVEN 在WildFly上創建了一些EAR應用程序我需要在EAR中放置一些配置文件,日誌和用戶腳本,以便這些文件可以由用戶通過簡單的編輯器讀取或寫入,我可以從任何依賴ejb或war模塊中的任何類讀取\寫入這些文件。 我可以將這些文件放在耳機模塊的\src\main\application\somedir目錄中, 但我不能通過從依賴模塊訪問那些文件您能指點我一些解決方案嗎? 我必須指定問題。問題是不是「我必須把文件從特定類加載它們」 問題是「我必須做什麼,如果我需要文件讀取\從EAR的某個模塊寫入並且用戶可以通過簡單編輯器編輯它們」EAR中的自定義資源

+0

getResourceAsStream()將在您的CLASSPATH中查找文件,但會查找其只讀文件。如果你想寫這些文件,那麼你需要把它放在文件系統(FS)上,並通過FS完整路徑引用它們。 –

回答

0

getResourceAsStream()在類路徑中搜索文件。 EAR文件內容不在您的類路徑中。

解決方案:把文件一戰(耳朵內側),那麼你可以用下面的Java代碼閱讀:

*.war\WEB-INF\classes\config.properties 

getResourceAsStream("config.properties") 
0

如果你把它放在你的類/包/資源(或WEB -INF/classes中),你可以使用類加載器獲得一個InputStream它,U可以使用一些通用的是這樣的:

InputStream isFile = SomeClassInTheSamePackage.class.getResourceAsStream("yourFileName"); 

或如果u使用Apache/tomcat的ü可以使用一些這樣的事:

String catPath = System.getProperty("catalina.home");//"user.dir" 
String path = catPath + "webapps" + File.separator + "nameOfYourApp.ear/.war/.jar"; 
File myFile = new File(path); 
BufferedOutputStream buffer = new BufferedOutputStream(new FileOutputStream(myFile)); 
//buffer. 
buffer.close(); 

我希望這對你有所幫助。