一, java project 项目
如果工程项目是 java project 的话获取资源文件
1, 如果是在本工程根目录下直接访问
FileReader fr = new FileReader("config.properties");
2, 也可以直接根据实际路径进行访问
FileReader fr = new FileReader("D:\\practice\\backend\\myeclipse\\web_db\\config.properties");
3, 使用类加载器访问(所在目录为 src 目录 如果要放到具体的包里面 需要加上包的目录)
InputStream fr = JDBCUtil.class.getClassLoader().getResourceAsStream("config.properties");
二, web project
- Properties pt = new Properties();
- pt.load(new FileReader("config.properties"));
如果按照上面的代码访问 (文件还是在根目录下) 会报如下错误
出现上面的错误的解决方法
1, 用类加载器的方式进行访问资源(在 src 目录下)
InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("config.properties");
2, 使用国际化资源类进行访问资源
ResourceBundle rb=ResourceBundle.getBundle("cn.itcast.jdbc.util.config");
但是如果你要放在项目的根目录下想通过浏览器的方式是访问不到资源的
因为发布项目的时候发布的是 WebRoot 目录里面的东西(根目录下的资源根本就发布不到工程里所以无法访问资源) Tomcat 编译后的文件如下图
假如你想通过这样的路径访问资源文件 http://localhost:8080/web_servlet03/WEB-INF/classes/config.properties 也是访问不到的因为 WEB-INF 目录是不能通过
浏览器进行访问的. 如果你的确想访问资源文件的话必须将资源文件放到 WebRoot 目录下就可以直接访问了如下图:
三, servlet 访问资源
1, 可以用类加载器
InputStream is=PathDemo.class.getClassLoader().getResourceAsStream("a.txt");
2, 使用 servletContext 上下文访问资源(注: 访问的资源不能放到根目录下 因为当发布的时候发布的是 webRoot 下面的东西, 读取资源的时候读取的是服务器的东西)
- ServletContext sc = getServletContext();
- String bPath=sc.getRealPath("/b.txt");// 根据虚拟路径获取真实路径
来源: https://www.cnblogs.com/nianzhilian/p/9160838.html