3

我正在开发一个将文件存储在 /WEB-INF/someFolder/ 下的应用程序。但是我找不到在此文件夹下创建文件的正确方法。我这样做了,但它不起作用:

        File newFile = new File("/WEB-INF/fileName.xml");

当我尝试检查创建时:

        boolean isCreated = newFile.createNewFile();

我得到:

        java.io.IOException: No such file or directory

请帮助我以正确的方式进行操作。

更新: 我做了这个解决方法,它正在工作,但我没有看到它是高性能的解决方案。

        ServletContext servletContext = getServletContext();
        String path = servletContext.getRealPath("/WEB-INF/");
        File newFile2 = new File(path+"/fileName.xml");

有任何想法吗?

4

2 回答 2

8

您应使用 ServletContext.getRealPath(String) 并手动构建整个类路径

String webInfPath = getServletConfig().getServletContext().getRealPath("WEB-INF");

或者一步一步来:

ServletConfig scfg= getServletConfig();
ServletContext scxt = scfg.getServletContext();
String webInfPath = sxct.getRealPath("WEB-INF");

而不是使用 webInfPath 在 WEB-INF 中创建一个 File 对象

File newFile = new File(webInfPath + "/fileName.xml");
于 2013-08-30T10:07:59.907 回答
2

确保您的应用程序具有写入权限。你可以得到这样的路径:

String path=Thread.currentThread().getContextClassLoader().getResource("com/youpackage/");

现在你得到了你的类文件夹路径,所以你可以得到WEB-INF路径。ps:我记得创建文件时必须写一些内容,否则可能无法创建。

于 2013-08-30T10:06:27.617 回答