您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在servlet中访问本地文件

如何在servlet中访问本地文件

这是你的选择。基本上有三种方式:

将其放在类路径中,以便可以ClassLoader#getResourceAsStream()使用相对于类路径的路径来加载它:

Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("filename.properties"));

这里filename.properties应该被放置在其通过web应用程序的认类路径,例如所覆盖的根源之一Webapp/WEB- INF/libWebapp/WEB- INF/classesAppserver/libJRE/lib。如果propertiesfile是特定于webapp的,则最好将其放在中WEB- INF/classes。如果要在IDE中开发项目,则也可以将其放在src文件夹(项目的源文件夹)中。

您也可以将其放置在认类路径之外的某个位置,并将其路径添加到应用服务器的类路径。例如,在Tomcat中,您可以将其配置为的shared.loader属性Tomcat/conf/catalina.properties

2.)将其放在Web文件夹(项目的Web内容文件夹)中的某个位置,以便您可以ServletContext#getResourceAsStream()使用相对于webcontent的路径加载它:

Properties properties = new Properties();
properties.load(getServletContext().getResourceAsStream("/WEB-INF/filename.properties"));

请注意,我已演示将文件放置在文件/WEB- INF夹中,否则任何Web浏览器都可以公开访问该文件。还要注意,ServletContext在任何HttpServlet类中,都只能由Inherited访问GenericServlet#getServletContext()

3.)将其放在本地磁盘文件系统中的某个位置,以便您可以java.io使用绝对本地磁盘文件系统路径以常规方式加载它:

Properties properties = new Properties();
properties.load(new FileInputStream("/absolute/path/to/filename.properties");

这里有很多不同的方法,但这取决于您的需求:

要加载一个属性文件$TOMCAT_HOME/conf directory您需要使用访问它java.io.File的对象,因为类加载器(如this.getClass().getClassLoader().getResourceAsStream(...)仅仅是能够从你的类路径加载文件(类)(下WEB- INF/classesWEB-INF/lib$TOMCAT_HOME/lib)。

从中加载文件的最简单示例Tomcat's config directory是:

File configDir = new File(System.getProperty("catalina.base"), "conf");
File configFile = new File(configDir, "myconfig.properties");
InputStream stream = new FileInputStream(configFile);
Properties props = new Properties();
props.load(stream);
Jave 2022/1/1 18:14:08 有498人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶