javaWeb项目下获取当前类的绝对路径

本文介绍了两种在JavaWeb项目中获取当前项目路径的方法,并演示了如何利用这些路径来读取项目内的文件。

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

在开发中我们经常会对文件进行操作,所以也就经常涉及到文件路径问题。那么在JavaWeb项目中如何获取当前项目或Java类的路径呢?


如下代码是一个简单的Servlet 类:

public class First extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 情况1	
		String realPath = this.getServletContext().getRealPath("");
		System.out.println(realPath);
		//  E:\Server\tomcat-6.0.30\webapps\Day003
		
		// 情况2
		ClassLoader classLoader = this.getClass().getClassLoader();
		String path = classLoader.getResource("").getPath();
		System.out.println(path);
		//  /E:/Server/tomcat-6.0.30/webapps/Day003/WEB-INF/classes/
		
	}

}
由上代码可以得出有两种方法获取当前项目的路径。一是this.getServletContext().getRealPath("");即通过Servlet上下文对象获取路径,该路径指向当前Servlet容器所在位置,也就是当前项目路径;二是通过类加载器获取当前类的路径,在这里特别提醒:所有类的路径都指向  服务器路径/项目名称/WEB-INF/classes/ ,因为项目发布后所有的.class 文件都放在这个目录下。


既然得到了以上信息,那么我们如何来读取项目下的一个文件呢?文件所在位置如下:

操作代码如下:

public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 情况1
//		InputStream is = new FileInputStream("1.jpg");	// 报错,   java.io.FileNotFoundException: 1.jpg (系统找不到指定的文件。)
		File file = new File("1.jpg");
		System.out.println(file.getAbsolutePath());     // E:\Server\tomcat-6.0.30\bin\1.jpg
		
		// 情况2
		String realPath = this.getServletContext().getRealPath("1.jpg");
		InputStream is2 = new FileInputStream(realPath);
		
		// 情况3
		ClassLoader classLoader = this.getClass().getClassLoader();
		String path = classLoader.getResource("../../1.jpg").getPath();
		InputStream is3 = new FileInputStream(realPath);
		
	}
由上可知,不能使用InputStream is = new FileInputStream("1.jpg"); 因为web项目发布到服务器后文件目录有所改变。所以只能使用上面的情况2,和情况3进行本项目下的文件操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值