您好我正在使用maven web项目,并想写一些文件abc.properties。此文件位于standard / src / main / resource文件夹中。我的代码是:
FileWriter file = new FileWriter("./src/main/resources/abc.properties");
try {
file.write("hi i am good");
} catch (IOException e) {
e.printStackTrace();
} finally {
file.flush();
file.close();
}
但它不起作用,因为路径不正确。我尝试了很多其他的例子但是无法给出这个文件的路径。
请帮助我设置放在资源文件夹中的文件路径。
由于
答案 0 :(得分:1)
我认为你混淆了构建时和运行时。在构建期间,您拥有src/main/java
,src/main/resources
和src/main/webapp
,但在运行时这些都捆绑在war文件中。这意味着不再有src/main/resources
这样的事了。
最简单的方法是写入[tempFile] [1]并写入该文件。最好的方法是配置outputFile,例如在wqeb.xml
。
[1]:http://docs.oracle.com/javase/6/docs/api/java/io/File.html#createTempFile(java.lang.String,java.lang.String)
答案 1 :(得分:0)
如果您的文件被删除在 src / main / resources 下,如果您将项目打包为,则它将最终位于 your-webapp / WEB-INF / classes 目录下一个Web应用程序,即 maven-war-plugin 。
在运行时,如果您希望位于后一目录下的文件(被视为Web应用程序资源)因此已存在于应用程序类路径中,则可以使用getResourceAsStream()
方法在{ {1}}或使用当前的班级ServletContext
:
从当前线程上下文:
ClassLoader
如果您有权访问Servlet上下文:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream is = classLoader.getResourceAsStream("abc.properties");
FileWriter file = new FileWriter(new File(new FileInputStream(is)));
// some funny stuff goes here
注意后一个示例中的前导斜杠。