相对路径 绝对路径 根目录 上一目录 当前目录

本文详细解析了在Web开发中绝对路径与相对路径的概念及应用,包括路径建立的基础符号、不同场景下的路径引用实例,以及VC和Java环境下的路径表示方法。

相对路径-以引用文件之网页所在位置为参考基础,而建立出的目录路径。因此,当保存于不同目录的网页引用同一个文件时,所使用的路径将不相同,故称之为相对。

绝对路径-以Web站点根目录为参考基础的目录路径。之所以称为绝对,意指当所有网页引用同一个文件时,所使用的路径都是一样的。

其实绝对路径与相对路径的不同处,只在于描述目录路径时,所采用的参考点不同。由于对网站上所有文件而言,根目录这个参考点对所有文件都是一样的,因此,运用以根目录为参考点的路径描述方式才会被称之为绝对路径。
以下为建立路径所使用的几个特殊符号,及其所代表的意义。

"."--代表目前所在的目录。 
".."--代表上一层目录。 
"/"--代表根目录。 

接下来,我们假设读者所建立的Web站点拥有如下图所示目录路径。

假若要在Ref.htm文件中引用BeRef.gif文件时,其相对路径如下:
./SubDir2/BeRef.gif
上面的引用路径中,".“代表目前的目录(Dir1),所以”./SubDir2"代表目前目录下的SubDir2。其实,可以省略"./"直接用下这个方式引用。
SubDir2/BeRef.gif
若使用绝对路径以根目录为参考点引用该文件时,引用路径如下:
/Dir1/SubDir2/BeRef.gif

如果Web站点的目录之结构如下图时

     引用BeRef.gif文件的相对路径又是如何呢? 

假若要在Ref.htm文件中引用BeRef.gif文件时其相对路径如下:
…/SubDir2/BeRef.gif

上面的引用路径中,"…"代表上一层目录,所以,/Dir2"代表上一层目录下的Dir2子目录。若使用绝对路径引用时,则引用路径如下:
/Dir2/BeRer.gif

我们再举一个比较复杂的例子,来比较一下相对路径与绝对路径的使用。假设在读者所建立之Web站点中,拥有如下图的目录路径。

我们用以一个表格来说明在上图的情况下,某文件引用另一文件时,所应使用的相对路径与绝对路径。

引用者

被引用者

相对路径

绝对路径

Ref1.htm
BeRef1.gif
…/SubDir2/BeRef1.gif
/Dir1/SubDir2/BeRef1.gif

Ref2.htm
BeRef1.gif
…/…/Dir1/SubDir2/ BeRef1.gif
/Dir1/SubDir2/ BeRef1.gif

Ref1.htm
BeRef2.htm
…/…/Dir2/ BeRef2.htm
/Dir2/BeRef2.htm

Ref2.htm
BeRef2.htm
…/BeRef2.htm
/Dir2/BeRef2.htm

上表中比较需要说明的是"…/…/"所代表的意义。
"…“代表上一层目录,而”…/…/"所代表的是上一层目录的上一层目录。所以,从上表中可以看出,如果引用的文件存在于目前目录的子目录中,或者存在于上一层目录的 另一个子目录中,运用相对路径是比较方便的。如果不是时,则干脆利用绝对路径,还比较省事。从上表中,亦可以看出,当被引用的是同一个文件时,引用文件所使用的绝对路径是一样的。

   VC下,/=//,即./等同于.//。.//表示当前路径,..//表示父路径。在IDE环境运行程序的时候,默认当前路径是工程项目所在路径,也就是dsp文件,sln文件所在路径。

java 中,/ 盘符根目录/ = F:/。./当前目录同src ./src/ = src/。…/上一目录 …/HelloProject/src/=src/=./src/

文件路径处理中,**相对路径的“根目录”和“上目录”** 是两个非常基础但容易混淆的概念。下面我们来详细解释它们的含义,并给出示例。 --- ## 相对路径中的“上目录” ### ✅ 语法:`../` - `..` 表示当前目录的**上目录**。 - 它用于从当前目录“向上跳级”访问父目录中的文件。 ### 示例: 假设你当前在目录: ``` /home/user/project/src/ ``` 你想要访问上目录中的 `README.md` 文件: ```c FILE *fp = fopen("../README.md", "r"); ``` 这等价于: ``` /home/user/project/README.md ``` --- ## 二、相对路径中的“根目录”(Root) ### ✅ 语法:`/` - 在 Linux/macOS 中,`/` 表示系统的**根目录**,是整个文件系统的最顶层目录。 - 在 Windows 中,根目录是盘符下的根目录,如 `C:\`。 ### 示例(Linux): ```c FILE *fp = fopen("/etc/hosts", "r"); ``` 表示访问系统根目录下的 `etc/hosts` 文件。 --- ## 三、相对路径 vs 绝对路径 | 类型 | 示例 | 说明 | |------------|--------------------------------|------| | 相对路径 | `data.txt`、`../config.ini` | 相对于当前工作目录解析路径 | | 绝对路径 | `/home/user/data.txt` | 从系统根目录开始解析路径 | | Windows 路径 | `C:\Users\user\data.txt` | 从盘符根目录开始解析路径 | --- ## 四、常见路径表示方式 | 路径表示 | 含义 | |----------|------| | `.` | 当前目录 | | `..` | 上目录 | | `./file.txt` | 当前目录下的 `file.txt` | | `../file.txt` | 上目录下的 `file.txt` | | `../../file.txt` | 上两级目录下的 `file.txt` | | `/file.txt` | 系统根目录下的 `file.txt` | | `C:\file.txt` | Windows 中 C 盘根目录下的 `file.txt` | --- ## 五、C 语言示例代码 以下是个使用相对路径和上目录的示例程序: ```c #include <stdio.h> int main() { // 当前目录下的文件 FILE *fp1 = fopen("data.txt", "r"); if (fp1) { printf("成功打开当前目录下的 data.txt\n"); fclose(fp1); } // 上目录中的文件 FILE *fp2 = fopen("../README.md", "r"); if (fp2) { printf("成功打开上目录中的 README.md\n"); fclose(fp2); } // 系统根目录中的文件(Linux 示例) FILE *fp3 = fopen("/etc/hostname", "r"); if (fp3) { printf("成功打开系统根目录中的 /etc/hostname\n"); fclose(fp3); } return 0; } ``` --- ## 六、注意事项 1. **路径大小写敏感性**: - Linux/macOS:区分大小写,`File.txt` 和 `file.txt` 是不同文件。 - Windows:不区分大小写。 2. **Windows 路径分隔符建议统使用 `/` 或 `\\`**: - 推荐使用双反斜杠 `\\` 或正斜杠 `/`: ```c fopen("C:/Users/user/data.txt", "r"); fopen("C:\\Users\\user\\data.txt", "r"); ``` 3. **路径拼接应使用系统兼容方式**: - 在跨平台项目中,建议使用宏或函数处理路径拼接。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值