我正在开发一个将文件存储在/ 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");
有什么想法吗?
答案 0 :(得分:7)
您应使用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");
答案 1 :(得分:2)
确保您的applaction具有写入权限。 你可以得到这样的道路:
String path=Thread.currentThread().getContextClassLoader().getResource("com/youpackage/");
现在您获得了类文件夹路径的路径,因此您可以获取WEB-INF路径。 ps:我记得在创建文件时你必须编写一些内容,否则它可能无法创建。