web项目中获取资源及资源路径

public class PathServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        System.out.println("=============原始路径(这样写不好使了!!!)==============");
        // 之前main方法 中路径按如下填写,为什么能活得到?
        // 路径相对的是虚拟机开始运行的路径. 在MyEclipse中, 运行main方法,虚拟机运行开始于项目路径.
        // 运行tomcat的虚拟机.开始路径在tomcat的bin目录下.所以以前的路径填写方式 不好使了
//        FileInputStream fis = new FileInputStream("src/abc2.txt");
        //正确写法参考
        FileInputStream fis = new FileInputStream("haha/abc.txt");
        System.out.println("fis=" + fis);
        
        
        System.out.println("=============ServletContext==============");
        //相对于当前web应用
        InputStream is = getServletContext().getResourceAsStream("/WEB-INF/classes/com/first/servlet/abc.txt");
        System.out.println("is=" + is);
        InputStream is2 = getServletContext().getResourceAsStream("/WEB-INF/classes/abc2.txt");
        System.out.println("is2=" + is2);
        
        URL url = getServletContext().getResource("/WEB-INF/classes/abc2.txt");
        String path = url.getPath();
        System.out.println("path=" + path);
//        String host = url.getHost();
//        System.out.println("host=" + host);
        
        System.out.println("==============Class=============");
        
        //加"/"相对于classes目录
        InputStream stream = this.getClass().getResourceAsStream("/abc2.txt");
        System.out.println("stream=" + stream);
        //不加"/"获取的是当前类所在包路径
        InputStream stream2 = this.getClass().getResourceAsStream("abc.txt");
        System.out.println("stream2=" + stream2);
        
        URL url2 = this.getClass().getResource("abc.txt");
        String path2 = url2.getPath();
        System.out.println("path2=" + path2);
        
        URL url3 = this.getClass().getResource("/abc2.txt");
        String path3 = url3.getPath();
        System.out.println("path3=" + path3);
        
        System.out.println("==============ClassLoader=============");
        //加"/"和不加"/"都是想对于classes目录下
        ClassLoader loader = this.getClass().getClassLoader();
        InputStream stream3 = loader.getResourceAsStream("/abc2.txt");
        System.out.println("stream3=" + stream3);
        InputStream stream4 = loader.getResourceAsStream("abc2.txt");
        System.out.println("stream4=" + stream4);
        
        URL url4 = loader.getResource("abc2.txt");
        URL url5 = loader.getResource("/com/first/servlet/abc.txt");
        System.out.println("url4=" + url4.getPath());
        System.out.println("url5=" + url5.getPath());
        
    }
    
    //路径相对的是虚拟机开始运行的路径. 在MyEclipse中, 运行main方法,虚拟机运行开始于项目路径.
    public static void main(String[] args) throws Exception {
        System.out.println("=============原始路径==============");
        FileInputStream fis = new FileInputStream("src/abc2.txt");
        System.out.println("fis=" + fis);
    }

}

文件在工程中的位置:


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值