如何从服务器上的某个位置读取文件?
我可以使用:
成功读取/ WEB_INF / classesInputStream systemParamInputStream = getClass().getClassLoader().getResourceAsStream("ldap.properties");
但是,我想将此文件放在服务器上的某个位置,以便在应用程序在生产环境中生效时由支持人员配置。
我的自由配置文件server.xml位于此处:C:\ eclipse \ runtime \ usr \ servers \ tmpServer。 这很好,就像那里的任何其他位置一样。
答案 0 :(得分:1)
我正在使用java.util.Properties:
Properties props = new Properties();
props.load(new FileReader("path to your file"));
答案 1 :(得分:1)
“WEB-INF / classes”是类路径的一部分 您可以通过向服务器的类路径添加另一个文件夹来继续读取文件。在该文件夹中,您将拥有配置文件。
但你也可以像这样直接访问文件:
InputStream systemParamInputStream=new FileInputStream(filePath);
诀窍是找到一种配置文件filePath
的简洁方法,因为硬编码并不好。这是一个选项:
new FileInputStream(System.getProperty("filePath","C:\\eclipse\\runtime\\usr\\servers\\tmpServer"));
然后您将filePath
作为程序参数-DfilePath=c:\\
答案 2 :(得分:1)
This thread显示了不同的做法。
我成功尝试的是在server.xml
中将文件夹指定为库,以便它可以在类路径中使用:
<library id="configResources">
<folder="${server.config.dir}/config" />
</library>
<application location="foo.war">
<classloader privateLibraryRef="configResources" />
</application>
关于这种方法的两个小警告:
server.xml
元素(folder
),可能会导致Eclipse中出现cvc-complex-type.2.4.a: Invalid content was found starting with element 'folder'. One of '{fileset}' is expected.
XML验证错误。我尝试使用fileset
而不是让它工作。