---------------------取Servlet上下文路径,取WebContent的路径 --------------------------------
1、String path = request.getRealPath("/cfg.xml") (已不建议使用) 2、String path = request.getSession().getServletContext().getRealPath("/cfg.xml"); ---------------------读取类路径中的文件 --------------------------------一、getResource方法
//获取类的根路径classes/(重要)
URL s2 = Test.class.getResource("/");
String path2=s2.getPath();//如果路径有空格会使用 %20替代
//获取Test.class类文件所在的路径(重要)
URL s3 = Test.class.getResource("");
String path3=s3.getPath(); //如果路径有空格会使用 %20替代
// %20 转换为 空格(方案二)
String path4=s2.toURI().getPath(); //s2是URL s2System.out.println(path4);
// %20 转换为 空格(方案二)
String path="file:/E:/workspace3.6/configure%20huido/web/WEB-INF/classes/server-node.properties";
path = java.net.URLDecoder.decode(path, "UTF-8");System.out.println(path);
二、getResourceAsStream方法
//在classes目录找文件a.txt
InputStream is = Test.class.getResourceAsStream( "/a.txt");
//在ReadCard类所在目录找文件a.txt
InputStream is = Test.class.getResourceAsStream( "a.txt");
----------------------取类路径测试代码 -------------------------------
package com.hc360.config.util;import java.io.InputStream;import java.net.URISyntaxException;import java.net.URL;// Test.class类文件实际路径是:E:/workspace3.6/configure huido/web/WEB-INF/classes/com/hc360/config/util/Test.class// 配置文件的实际路径是E:\workspace3.6\configure huido\web\WEB-INF\classes\server-node.properties// 注意configure huido中间有一个空格// 下面开始测试,读取类路径中的文件public class Test { public static void main(String[] args) throws Exception { //--------------取path----------------------- // 获取类的根路径classes/(重要) // 结果:file:/E:/workspace3.6/configure%20huido/web/WEB-INF/classes/ // 参数也可以是:"/com/a.txt",在/com/目录下找文件a.txt URL s2 = Test.class.getResource("/"); System.out.println(s2); // 获取Test.class类文件所在的路径(重要) // 结果:file:/E:/workspace3.6/configure%20huido/web/WEB-INF/classes/com/hc360/config/util/ URL s3 = Test.class.getResource(""); System.out.println(s3); // 从来都是null // 结果:null URL s4 = Test.class.getClassLoader().getResource("/"); System.out.println(s4); // 获取类的根路径classes/ // 结果:file:/E:/workspace3.6/configure%20huido/web/WEB-INF/classes/ URL s5 = Test.class.getClassLoader().getResource(""); System.out.println(s5); // 获取类的根路径classes/ // 结果:file:/E:/workspace3.6/configure%20huido/web/WEB-INF/classes/ URL s6 = Thread.currentThread().getContextClassLoader().getResource(""); System.out.println(s6); //--------------取流InputStream----------------------- // 从类的根路径classes/下读取配置文件(重要) // 参数也可以是:"/com/a.txt",在/com/目录下找文件a.txt InputStream is = Test.class.getResourceAsStream("/server-node.properties"); System.out.println("InputStream is:" + (is == null ? "null" : "not null")); // 在Test类所在目录找文件(重要) // 要在classes/com/hc360/config/util/下有server-node.properties文件,就可以读出来 // 获取Test.class类文件所在的路径,读取配置文件(实际没有配置文件,所以返回null) InputStream is7 = Test.class.getResourceAsStream("server-node.properties"); System.out.println("InputStream is:" + (is7 == null ? "null" : "not null")); // 从来都是null InputStream is2 = Test.class.getClassLoader().getResourceAsStream("/server-node.properties"); System.out.println("InputStream is:" + (is2 == null ? "null" : "not null")); // 从类的根路径classes/下读取配置文件 InputStream is3 = Test.class.getClassLoader().getResourceAsStream("server-node.properties"); System.out.println("InputStream is:" + (is3 == null ? "null" : "not null")); //-------------------%20 转换为 空格-------------------- // %20 转换为 空格 // 结果:file:/E:/workspace3.6/configure%20huido/web/WEB-INF/classes/ String path5=s2.toURI().toString(); System.out.println(path5); String path="file:/E:/workspace3.6/configure%20huido/web/WEB-INF/classes/server-node.properties"; path = java.net.URLDecoder.decode(path, "UTF-8"); System.out.println(path); }}