写入maven项目中的文件

时间:2014-09-06 18:58:56

标签: java maven java-ee

您好我正在使用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();
            }

但它不起作用,因为路径不正确。我尝试了很多其他的例子但是无法给出这个文件的路径。

请帮助我设置放在资源文件夹中的文件路径。

由于

2 个答案:

答案 0 :(得分:1)

我认为你混淆了构建时和运行时。在构建期间,您拥有src/main/javasrc/main/resourcessrc/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

注意后一个示例中的前导斜杠。