Java 获取资源相关方法梳理

本文深入解析Java项目中ServletContext、Class和ClassLoader的路径获取方法,包括getRealPath(), getResourceAsStream()和getResourcePaths()等,详细说明了如何在项目中定位和读取资源文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

Java项目的路径重要有ServletContext、Class、ClassLoader方式

ServletContext:

ServletContext 有三种方法:

(1)getRealPath():获取带盘符的绝对路径

在一个servlet中演示

ServletContext sc=this.getServletContext();
String s1=sc.getRealPath("a.txt");
System.out.println(s1);

输出结果:

D:\apache-tomcat-7.0.42\webapps\day2_1\a.txt

getRealPath()该方法会将传入的参数前面加上项目所在的绝对路径

(2)getResourceAsStream():获取资源流

在项目的根目录下,建立一个a.txt,内容是Hello!

ServletContext sc=this.getServletContext();
InputStream is =sc.getResourceAsStream("a.txt");
System.out.println(IOUtils.toString(is));//这里使用了commons.io.jar包
Hello!

(3)getResourcePaths():输出文件加下的所有资源路径

ServletContext sc=this.getServletContext();
Set<String> s=sc.getResourcePaths("/WEB-INF");
System.out.println(s);

结果:

[/WEB-INF/lib/, /WEB-INF/classes/, /WEB-INF/b.txt, /WEB-INF/web.xml]

ClassLoader

getResourceAsStream()方法

/**
	 * ClassLoader 查找资源不能使用‘/’
	 * 相对于classes
	 * @throws IOException
	 */
	@Test
	public void test1() throws IOException{
		ClassLoader cl= Demo1.class.getClassLoader();//得到类加载器
		InputStream is=cl.getResourceAsStream("a.txt");//让类加载器到类路径下查找资源
		System.out.println(IOUtils.toString(is));
	}

Class

/**
	 * Class相对.class文件的对应目录下
	 * @throws IOException
	 */
	@Test
	public void test2() throws IOException{
		Class c=Demo1.class;
		InputStream is=c.getResourceAsStream("a.txt");
		System.out.println(IOUtils.toString(is));
	}
	
	
	/**
	 * Class 加‘/’相对classes文件
	 * @throws IOException
	 */
	@Test
	public void test3() throws IOException{
		Class c=Demo1.class;
		InputStream is=c.getResourceAsStream("/a.txt");
		System.out.println(IOUtils.toString(is));
	}

补充:

1、在src目录下的文件既是发布后文件的classes目录下

2、WebRoot目录就是根目录

3、“..”在路径前面代表对应路径的上一级目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值