相对路径与绝对路径的区别

绝对路径:

  在我们平时使用计算机时要找到需要的文件就必须知道文件的位置,而表示文件的位置的方式就是路径,例如只要看到这个路径:c:/website/img/photo.jpg我们就知道photo.jpg文件是在c盘的website目录下的img子目录中。类似于这样完整的描述文件位置的路径就是绝对路径。我们不需要知道其他任何信息就可以根据绝对路径判断出文件的位置。而在网站中类似以http://www.e3i5.net/img/photo.jpg来确定文件位置的方式也是绝对路径。

  在网站的应用中,通常我们使用"/"来表示根目录,/img/photo.jpg就表示photo.jpg文件在这个网站的根目录上的img目录里。但是这样使用对于初学者来说是具有风险性的,因为要知道这里所指的根目录并不是你的网站的根目录,而是你的网站所在的服务器的根目录,因此当网站的根目录与服务器根目录不同时,就会发生错误。 
  相对路径:

  分析一下为什么会发生图片不能正常显示的情况。举一个例子,现在有一个页面index.htm,在这个页面中联接有一张图片photo.jpg。他们的绝对路径如下:
  c:/website/index.htm
  c:/website/img/photo.jpg

  如果你使用绝对路径c:/website/img/photo.jpg,那么在自己的计算机上将一切正常,因为确实可以在指定的位置即c:/website/img/photo.jpg上找到photo.jpg文件,但是当你将页面上传到网站的时候就很可能会出错了,因为你的网站可能在服务器的c盘,可能在d盘,也可能在aa目录下,更可能在bb目录下,总之没有理由会有c:/website/img/photo.jpg这样一个路径。那么,在index.htm文件中要使用什么样的路径来定位photo.jpg文件呢?对,应该是用相对路径,所谓相对路径,顾名思义就是自己相对与目标位置。在上例中index.htm中联接的photo.jpg可以使用img/photo.jpg来定位文件,那么不论将这些文件放到哪里,只要他们的相对关系没有变,就不会出错。

  另外我们使用“../”来表示上一级目录,“../../”表示上上级的目录,以此类推。(学习过dos的朋友可能更容易理解)

  再看几个例子,注意所有例子中都是index.htm文件中联接有一张图片photo.jpg。

  例:
  c:/website/web/index.htm
  c:/website/img/photo.jpg
  在此例中index.htm中联接的photo.jpg应该怎样表示呢?
  错误写法:img/photo.jpg
  这种写法是不正确的,在此例中,对于index.htm文件来说img/photo.jpg所代表的绝对路径是:c:/website/web/img/photo.jpg,显然不符合要求。
  正确写法:使用../img/photo.jpg的相对路径来定位文件

  例:
  c:/website/web/xz/index.htm
  c:/website/img/images/photo.jpg
  在此例中index.htm中联接的photo.jpg应该怎样表示呢?
  错误写法:../img/images/photo.jpg
  这种写法是不正确的,在此例中对于index.htm文件来说../img/images/photo.jpg所代表的绝对路径是:c:/website/web/img/images/photo.jpg。  
  正确写法:可以使用../../img/images/photo.jpg的相对路径来定位文件

  例:
  c:/website/web/xz/index.htm
  c:/website/web/img/photo.jpg
  在此例中index.htm中联接的photo.jpg应该怎样表示呢?
  错误写法:../../img/photo.jpg
  这种写法是不正确的,在此例中对于index.htm文件来说../../img/photo.jpg所代表的绝对路径是:c:/website/img/photo.jpg。
  正确写法:可以使用../img/photo.jpg的相对路径来定位文件

  总结:通过以上的例子可以发现,在把绝对路径转化为相对路径的时候,两个文件绝对路径中相同的部分都可以忽略,不做考虑。只要考虑他们不同之处就可以了。

(0)

相关推荐

  • javascript将相对路径转绝对路径示例

    这里介绍的其实本质上是两种方法,通过创建DOM或通过JavaScript计算: 1)通过新创建的Image, 经测试会发送一个Aborted的请求,并且IE6不支持, 将new Image改成document.createElement('IMG')也是一样的;测试应该不喜欢这个方案: 复制代码 代码如下: function getAbsoluteUrl(url){    var img = new Image();    img.src = url;  // 设置相对路径给Image, 此时会

  • PowerShell中把相对路径转换为绝对路径的2个方法

    在PowerShell中,有时候,我们需要把当前的相对路径解析为绝对路径,比如".\test.txt",我们想知道它的绝对路径的话,我们有两种方法可以实现. 1.有一个cmd-let,它叫Resolve-Path. 语法如下: 复制代码 代码如下: Resolve-Path <相对路径> 如果指定的相对路径的文件或文件夹,不存在,则将提示如下: 复制代码 代码如下: PS C:\Users\zhanghong> Resolve-Path .\test.txt Reso

  • php绝对路径与相对路径之间关系的的分析

    php中好像不能像asp那样用"/"表示根目录,代之以$_SERVER['DOCUMENT_ROOT'],其它则相同:../表示向上一层../表示当前层.假如现在a/b/c/s.php要调用根目录下的 /bb/s2.txt,则: $RootDir = $_SERVER['DOCUMENT_ROOT']; $fireDir = "$RootDir/bb/s2.txt"; 或者:"../../../bb/s2.txt"表示向上返回到b再向上到a再向上

  • 相对路径转化成绝对路径

    提取 Gregarius中的一个函数.可以把网页中的相对路径自动转化成绝对路径. <?  function relative_to_absolute($content, $feed_url) {      preg_match('/(http|https|ftp):\/\//', $feed_url, $protocol);      $server_url = preg_replace("/(http|https|ftp|news):\/\//", "", 

  • 相对路径和绝对路径的写法总结

    在C#中 "\"是特殊字符,要表示它的话需要使用"\\".由于这种写法不方便,C#语言提供了@对其简化. 只要在字符串前加上@即可直接使用"\".所以上面的路径在C#中应该表示为"Book",@"\Tmp\Book",@"C:\Tmp\Book". 相对路径使用"/"字符作为目录的分隔字符,而绝对路径可以使用"\"或"/"字符作

  • 浅谈网页中的相对路径和绝对路径

    经常听到网友苦述自己的网页中有许多图片不能正常显示,究竟为什么不能正常显示呢?总结其原因绝大部分都是因为使用了错误路径所致.网页中的图像.动画等素材都有自己固定的存放位置,网页只是通过路径使用HTML语言来调用它们,然后把它们显示在网页中.在网页中的路径大体可分为相对路径和绝对路径,大家(尤其是初学网页设计的朋友)往往对它们不够认识,在应该使用相对路径的地方使用了绝对路径,从而导致浏览器无法在指定的位置打开指定的文件,使素材不能正常显示. 那什么是相对路径?什么是绝对路径呢?为什么使用了绝对路径

  • java区分绝对路径和相对路径的方法

    本文实例讲述了java区分绝对路径和相对路径的方法.分享给大家供大家参考.具体分析如下: 这里要区分的是目录路径 如: /opt/deve/tomcat/bin c:\deve\tomcat\bin 都是绝对目录路径 bin bin/data bin\data 都是相对目录路径 通过观察,发现规律 以/开始 或者 包含\或//的都是绝对路径 或者 以/开始 或者 包含:的都是绝对路径 反之就是相对路径 介绍几个方法: startsWith public class Stringutil { pu

  • asp中将相对路径转换为绝对路径的函数代码

    复制代码 代码如下: '================================================ ' 函数名:ChkMapPath ' 作 用:相对路径转换为绝对路径 ' 参 数:strPath ----原路径 ' 返回值:绝对路径 '================================================ Function ChkMapPath(ByVal strPath) Dim fullPath strPath = Replace(Repla

  • 谈谈PHP中相对路径的问题与绝对路径的使用

    问题描述 首先我们先来看一下我们这个例子的目录结构以及这三个文件的内容 a.php <?php include './c/d.php' b.php <?php define('__B', 'this is a test'); c/d.php <?php include '../b.php'; var_dump(__B); 在c目录下面的d.php文件引用了它的上级目录下的 b.php 文件 单独运行 c/d.php 的时候不会出问题 但是,如果在和b同级目录下的a.php引用c/d.ph

  • C#绝对路径拼接相对路径的实例代码

    做项目时发现Path.Combine方法只能支持傻瓜式的目录拼接 复制代码 代码如下: //绝对路径string absolutePath = @"C:\Program Files\Internet Explorer";//相对路径string relativePath = @"..\TestPath\";//预计拼接结果string splicingResult = string.Empty;Console.WriteLine(string.Format(&quo

随机推荐