Java 如何在类的静态块中获取文件夹的实际路径

Java 如何在类的静态块中获取文件夹的实际路径,java,Java,我有一个web应用程序,我需要在一个不是servlet的类的静态块中获取文件夹(在我的例子中是web-INF)的绝对路径。当然,我可以从属性文件中获取这个值,但我可以不这样做吗?您可以使用ServletContext ServletContext.getRealPath的getRealPath()方法来查找文件系统中的实际文件夹,如 String realPathOfImgFolder=req.getServletContext().getRealPath("/foldername"); 您可

我有一个web应用程序,我需要在一个不是servlet的类的静态块中获取文件夹(在我的例子中是web-INF)的绝对路径。当然,我可以从属性文件中获取这个值,但我可以不这样做吗?

您可以使用ServletContext ServletContext.getRealPath的getRealPath()方法来查找文件系统中的实际文件夹,如

String realPathOfImgFolder=req.getServletContext().getRealPath("/foldername");
您可能无法获得像这样的WEB-INF文件夹名称,因为它不在servlet上下文的公开目录中,您可能需要为它执行类似的操作

String rootPath=req.getServletContext().getRealPath("/");
File webInfFolder=new File(rootPath,"WEB-INF");

[编辑]如果没有
请求
对象,则必须使用
ServletContextListener
并使用其
contextInitialized(ServletContextEvent sce)
方法获取
ServletContext
并将路径存储到应用程序范围中,以便以后检索它。

您的意思是什么“文件夹的实际路径”?您有没有不使用属性文件的原因?我无法访问静态块中的请求实例。然后您可能必须使用
ServletContextListener
并使用其
contextInitialized(ServletContextEvent sce)
方法获取ServletContext并将路径存储到应用程序作用域中,以便以后检索。实际上,我需要的是您的最后一条注释。如果您将其作为答案,我将接受它。@OleksandrBondarenko编辑了包含注释的答案。