2017-06-12 77 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(); 

我希望这对你有所帮助。