文件的相对路径和绝对路径

File f = new File("D:/test/mytest.txt");//当执行这句话后在内存的栈空间存在一个f的应用,在堆空间里存在一个mytest.txt对象。注意


这个对象只含有文件的属性(如大小,是否可读,修改时间等),不包含文件的内容,所以length=0。当我们想执行对文件的操作的时候,这个时


候抽象路径起作用了,比如我们想执行f.createNewFile()命令时,虚拟机会将抽象路径转化为实际的物理路径,到这个转化后的物理路径(此时


是硬盘)下进行文件的创建。这时,如果在你的D盘没有test文件夹,那么不好意思啦,程序就会抛异常,如果有test文件夹,就可以创建一个


mytest.txt文件了。能不能创建mytest.txt就在于这个文件上面有没有test文件夹,这也就是抽象路径在装怪了。
如果想让f引用在硬盘中把文件夹也创建出来怎么办?用f.getParentFile()求出mytest.txt上面的所有文件夹,然后在mkdirs()就搞定了。


-----------------------
-----------------------
File类是用来构造文件或文件夹的类,在其构造函数中要求传入一个String类型的参数,用于指示文件所在的路径.以前一直使用绝对路径作为参


数,其实这里也可以使用相对路径.使用绝对路径不用说,很容易就能定位到文件,那么使用了相对路径jvm如何定位文件的呢?


按照jdk Doc上的说法”绝对路径名是完整的路径名,不需要任何其他信息就可以定位自身表示的文件。相反,相对路径名必须使用来自其他路


径名的信息进行解释。默认情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名。此目录由系统属性 user.dir 指定,通常是


Java 虚拟机的调用目录.”


相对路径顾名思义,相对于某个路径,那么究竟相对于什么路径我们必须弄明白.按照上面jdk文档上讲的这个路径是”当前用户目录”也就是”


java虚拟机的调用目录”.更明白的说这个路径其实是我们在哪里调用jvm的路径.举个例子:


假设有一java源文件Example.java在d盘根目录下,该文件不含package信息.我们进入命令行窗口,然后使用”d:”命令切换到d盘根目录下,然后


用”javac Example.java”来编译此文件,编译无错后,会在d盘根目录下自动生成”Example.class”文件.我们在调用”java Example”来运行


该程序.此时我们已经启动了一个jvm,这个jvm是在d盘根目录下被启动的,所以此jvm所加载的程序中File类的相对路径也就是相对这个路径的,即


d盘根目录:D:\.同时” 当前用户目录”也是D:\.在System.getProperty(“user.dir”);系统变量”user.dir”存放的也是这个值.


我们可以多做几次试验,把”Example.class”移动到不同路径下,同时在那些路径下,执行”java Example”命令启动jvm,我们会发现这个”当前


用户目录”是不断变化的,它的路径始终和我们在哪启动jvm的路径是一致的.


搞清了这些,我们可以使用相对路径来创建文件,例如:


File file = new File(“a.txt”);


file.createNewFile();


假设jvm是在”D:\”下启动的,那么a.txt就会生成在D:\a.txt;


此外,这个参数还可以使用一些常用的路径表示方法,例如”.”或”.\”代表当前目录,这个目录也就是jvm启动路径.所以如下代码能得到当前目


录完整路径:


File f = new File(“.”);


String absolutePath = f.getAbsolutePath();


System.out.println(absolutePath);//D:\


最后要说说在eclipse中的情况:


Eclipse中启动jvm都是在项目根路径上启动的.比如有个项目名为blog,其完整路径为:D:\work\IDE\workspace\blog.那么这个路径就是jvm的启


动路径了.所以以上代码如果在eclipse里运行,则输出结果为” D:\work\IDE\workspace\blog.”


Tomcat中的情况.


如果在tomcat中运行web应用,此时,如果我们在某个类中使用如下代码:


File f = new File(“.”);


String absolutePath = f.getAbsolutePath();


System.out.println(absolutePath);


那么输出的将是tomcat下的bin目录.我的机器就是” D:\work\server\jakarta-tomcat-5.0.28\bin\.”,由此可以看出tomcat服务器是在bin目


录下启动jvm的.其实是在bin目录下的” catalina.bat”文件中启动jvm的.
<think>首先,用户的问题是:“我想理解Linux系统中相对路径绝对路径的区别及使用方法 请问Linux 文件系统 相对路径绝对路径区别 使用方法”。我需要基于提供的引用系统级指令来回答。 关键点: - 回答必须使用中文。 - 行内数学表达式用$...$,但这里可能不涉及数学,所以可能不需要。 - 独立公式用$$...$$,但同样,可能不适用。 - LaTeX语法正确。 - 生成相关问题。 - 在回答中引用的段落末尾添加引用标识。 - 回答结构清晰,逐步解决问题。 - 参考站内引用:[^1], [^2], [^3]。 提供的引用: - [^1]:讨论了Linux路径,绝对路径从根目录/开始,如/usr/share/doc,相对路径基于当前目录。 - [^2]:讨论了文件路径表示,绝对路径如D:\vctest\...,相对路径如..\texture\dummy.bmp,表示父目录。 - [^3]:描述了Linux文件系统结构,如/bin, /home等目录。 用户的问题是关于Linux系统的,所以我应该主要参考[^1][^3],因为[^2]是针对Windows/C++的,但可以类比。 核心内容: - **绝对路径**:从根目录/开始的完整路径,如/usr/share/doc。 - **相对路径**:基于当前工作目录的路径,如./texture/dummy.bmp(当前目录的子目录)或../texture/dummy.bmp(父目录的子目录)。 使用方法: - 在命令中,如cd, ls等,可以使用绝对或相对路径。 - 例子:cd /usr/share/doc(绝对),cd ../texture(相对)。 回答结构: 1. **介绍路径概念**:解释什么是文件路径。 2. **绝对路径**:定义、特点、示例。 3. **相对路径**:定义、特点、示例,包括特殊符号如...。 4. **区别**:总结绝对相对路径的关键区别。 5. **使用方法**:如何在Linux命令中使用它们。 6. **生成相关问题**:在最后添加相关问题。 添加引用: - 在引用内容后添加[^1], [^2], [^3],但[^2]是针对Windows的,所以使用时需注意只引用相关部分。 确保回答真实可靠: - 基于引用,但补充常识知识。 最终回答应包括: - 清晰的结构。 - 中文。 - 相关问题。 - 引用标识。</think>### Linux文件系统中相对路径绝对路径的区别及使用方法 在Linux文件系统中,路径是用来指定文件或目录位置的字符串。理解相对路径绝对路径的区别及其使用方法,对于高效使用命令行导航文件系统至关重要。下面我将逐步解释这些概念,并提供实际示例。回答基于Linux系统的标准实践相关引用[^1][^3]。 #### 1. **路径的基本概念** - **文件路径**:表示文件或目录在文件系统中的位置。Linux文件系统采用树状结构,从根目录(/)开始,各级目录通过斜杠(/)分隔。 - **关键目录**:Linux文件系统包括多个标准目录,如/bin(存放二进制工具)、/home(用户主目录)、/etc(配置文件)等[^3]。这些目录构成了路径的基础。 - **当前工作目录**:每个用户在命令行会话中都有一个当前目录(可用`pwd`命令查看),相对路径是基于此目录计算的。 #### 2. **绝对路径的定义特点** - **定义**:绝对路径从根目录(/)开始,提供文件或目录的完整位置。无论当前目录在哪里,绝对路径都能唯一确定目标。 - **特点**: - 以斜杠(/)开头,例如/usr/share/doc。 - 不受当前目录影响,路径固定不变。 - 适用于脚本或命令中需要精确指定位置的场景。 - **示例**: - 在命令行中,切换到/usr/share/doc目录: ```bash cd /usr/share/doc # 绝对路径,从根目录开始 ``` 输出:`pwd`显示`/usr/share/doc`,证明位置已改变[^1]。 - 列出根目录下的内容: ```bash ls / # 绝对路径,显示根目录下的所有条目 ``` #### 3. **相对路径的定义特点** - **定义**:相对路径基于当前工作目录,不包含根目录(/)。它使用特殊符号简化路径表示: - `.`(点):表示当前目录。 - `..`(双点):表示父目录(上一级目录)。 - **特点**: - 不以斜杠(/)开头,例如./texture或../doc。 - 路径值依赖于当前目录,因此更灵活简洁。 - 适用于频繁操作当前目录附近文件时的快捷方式。 - **示例**: - 假设当前目录是/home/user(用`pwd`确认): - 访问当前目录下的docs子目录: ```bash cd ./docs # 等同于 cd docs,因为.可省略 ``` - 访问父目录的子目录texture: ```bash cd ../texture # 先退到父目录/home,再进入texture ``` 输出:`pwd`显示`/home/texture`(如果texture存在)[^1][^2]。 - 在脚本中,使用相对路径访问文件: ```bash cat ../config/settings.conf # 读取父目录下的config/settings.conf ``` #### 4. **相对路径绝对路径的关键区别** - **起点不同**: - 绝对路径始终从根目录(/)开始。 - 相对路径从当前目录开始。 - **可移植性**: - 绝对路径在任何位置都有效,但路径较长且不易迁移(如系统重装可能改变路径)。 - 相对路径更简洁,但只在当前目录上下文有效;如果当前目录改变,路径可能失效。 - **使用场景**: - 绝对路径:适合全局引用(如系统配置文件/etc/fstab)。 - 相对路径:适合局部操作(如在项目目录内导航)。 - **符号含义**: - 在相对路径中,`..`表示上一级目录,`.`表示当前目录(可省略)。在绝对路径中,这些符号无效[^1][^2]。 #### 5. **使用方法及实际命令示例** - **基本命令中的使用**: - `cd`(切换目录):可接受绝对或相对路径。 ```bash cd /var/log # 绝对路径:切换到系统日志目录 cd ../../home # 相对路径:从当前目录上移两级,再进home ``` - `ls`(列出文件):路径参数可以是绝对或相对。 ```bash ls /etc # 绝对路径:列出/etc下的文件 ls ./downloads # 相对路径:列出当前目录的downloads子目录内容 ``` - `cp`/`mv`(复制/移动文件):混合使用路径。 ```bash cp /home/user/file.txt ../backup/ # 绝对路径源 + 相对路径目标 ``` - **路径表示注意事项**: - 在Linux中,路径分隔符是斜杠(/),不是反斜杠(\)。反斜杠在Windows中常见,但Linux使用正斜杠[^2]。 - 特殊字符:路径中包含空格或特殊字符时,需用引号包裹,例如`cd "My Documents"`。 - **最佳实践**: - 在脚本中使用绝对路径,确保可靠性。 - 在命令行交互中优先用相对路径,提高效率。 - 使用`pwd`命令检查当前目录,避免相对路径错误。 #### 6. **总结** - 绝对路径提供完整定位,从根目录(/)开始,适合稳定引用。 - 相对路径基于当前目录,使用`.``..`简化操作,适合灵活导航。 - 理解Linux文件系统结构(如[^3]所述)有助于更好地应用路径。例如,用户主目录在/home下,临时文件在/tmp下。 通过合理使用两种路径,您可以高效管理Linux文件系统。如果您有更多场景(如脚本编写),请提供细节,我可以进一步解释。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值