相对路径 各种情况


1.相对路径概念

   1.1 相对路径就是相对于目标文件或(相对虚拟目录)的位置。,请看上图,“a.html” 文件里引用了“b.jpg”图片,由于“b.jpg”图片相对于“a.html”来说,是在同一个目录的,那么要在“a.html”文件里使用以下代 码后,只要这两个文件的相对位置没有变(也就是说还是在同一个目录内),那么无论上传到Web服务器的哪个位置,在浏览器里都能正确地显示图片.

    <body backgroud="b.jpg">

  1.2 在相对路径表示中,用./表示当前目录,所以上面代码等价于<body backgroud="./b.jpg">./指的就是html文件夹,那么../表示啥意思呢?聪明的你一定猜到了-就是表示上一级目录,a.html所在的目录是html文件夹,则他的上一级目录就是WebRoot,那么我们怎么在a.html中引用c.jpg呢?

    <body backgroud="../image/c.jpg">    即WebRoot/image/c.jpg


  1.3 问题

    再看上图,MainC.java中通过new File(path)想读取e.txt,按照1.1和1.2说的,e.txt和MainC.java处于同一目录,所以这段代码应该没有问题,但是运行却报“文件找不到异常”,这是怎么回事呢?这就涉及到相对虚拟目录的问题了。

2.相对虚拟目录

    2.1 java.io默认定位到当前用户目录("user.dir")下,即:工程根目录  System.getProperty("user.dir")得到的是“F:\JavaStudy\RelativePath”,这个目录就是java.io的相对虚拟目录,那么现在我们想读取e.txt到底该怎么做呢,

    String path="src/first/second/third/e.txt"; File file=new File(path);

    现在就可以正确读取e.txt了  

    2.2 java字节码对象  类.class.getResource("文件路径").getPath();

    除了2.1读取e.txt我们还可以通过java字节码读取

    String path2=MainC.class.getResource("e.txt").getPath(); File file=new File(path2);

原理是啥呢?原来 -  类.class.getResource的相对虚拟目录就是该 “类”的class文件路径,在本例MainC.class.getResource的相对虚拟目录就是“F:/JavaStudy/RelativePath/bin/first/second/third/”,而文件e.txt和MainC.class在同一目录,所以直接用相对路径“e.txt”就可以读取了,那么我们想读取c.txt怎么办?

    String path3=MainC.class.getResource("../../c.txt").getPath(); File file=new File(path3);

path3就是F:/JavaStudy/RelativePath/bin/first/c.txt”

3.总结

使用函数的情况下就要考虑相对虚拟目录。再根据虚拟目录进行判断文件的相对位置。

暂且写这么多,本文纯手打,欢迎大家批评指正


        

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值