绝对路径和相对路径有啥区别?
Posted
技术标签:
【中文标题】绝对路径和相对路径有啥区别?【英文标题】:What is the difference between an absolute and a relative path?绝对路径和相对路径有什么区别? 【发布时间】:2012-05-04 12:25:45 【问题描述】:我之所以这么问,是因为我正在为学校做一个项目。是的,这是家庭作业。但是,我试图了解更多一点。
这是所询问内容的一个示例。
• 当用户单击“保存”按钮时,将所选记录写入 txtFilePath 中指定的文件(绝对路径不是相对路径),而不截断当前其中的值。
这就是我所拥有的,
private void button2_Click(object sender, EventArgs e)
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
StreamWriter myWriter = new StreamWriter(saveFileDialog1.FileName);
myWriter.Write(txtFilePath.Text);
myWriter.Close();
现在,我不明白我这样做是否正确。我知道当我将它保存到我的桌面并从我的列表框中删除它时,当我尝试再次重新加载它时没有任何显示。这就是我的表格,
private void button1_Click(object sender, EventArgs e)
if (openFileDialog1.ShowDialog() == DialogResult.OK)
StreamReader myReader = new StreamReader(openFileDialog1.FileName);
txtFilePath.Text = openFileDialog1.FileName;
txtFilePath.Text = myReader.ReadToEnd();
myReader.Close();
这就是负载,
private void Form1_Load(object sender, EventArgs e)
string[] myFiles = Directory.GetFiles("C:\\");
foreach (string filename in myFiles)
FileInfo file = new FileInfo(filename);
employeeList.Items.Add(file.Name);
//...
有人可以帮我理解一下吗?
【问题讨论】:
【参考方案1】:绝对路径是访问文件系统中的位置所需的完整路径名。
例如:C:\Program Files\Internet Explorer\iexplorer.exe
相对路径与某个地标相关,通常是您的主要可执行文件位置或打开程序时设置的“开始”位置。
例如,如果您的主要可执行文件位于 C:\Program Files\
中,则到 iexplorer.exe
的相对路径为 Internet Explorer\iexplorer.exe
。
这通常是在您并不总是知道文件绝对在哪里时完成的,例如它将被安装在哪个驱动器号或它将在哪个文件夹下。
但是举个很好的例子,如果您的文件随程序一起提供,并且您知道程序的安装结构,那么无论您的程序安装在哪里,您都可以使用相对路径来查找所有文件,而不是使用绝对路径来查找程序的安装位置。每次都需要安装在完全相同的位置。
【讨论】:
【参考方案2】:假设您正在为某个地点指路。您有两种方法可以描述到达该位置:
相对于你的立场, 相对于地标。两者都将您带到同一个位置,但前者并不总是有效(“向左走,然后向右走,穿过两盏灯,然后再向右走”不一定有效从下一个城镇过来,但从你站的地方工作)。这就是本质上的区别。
如果你有C:\Windows\System32
,那是一个绝对路径。如果您有Windows\System32
,则只有在您从C:\
开始 时它才会起作用。如果您从C:\Program Files
开始,则需要..\
才能正确到达那里。
但是,无论您在硬盘驱动器的哪个位置,C:\Windows\System32\
都是访问该文件夹的明确方式。
【讨论】:
【参考方案3】:这实际上是一个简单的区别。 relative 文件路径将是一个基于根节点的结构; absolute 路径将是一个基于明确位置的结构。这听起来有点不可思议,但实际上很简单。
这里有一些例子:
绝对路径
C:\inetpub\yourapplication\default.aspx
http://www.yourapplication.com/default.aspx
这些路径是绝对的,因为它们没有歧义。示例 1 显示了绝对文件路径,示例 2 显示了绝对 URL。
相对路径
./../script/something.js
~/default.aspx
相对路径基于某个已知的前方参考点指定位置。所以在示例 1 中,您知道要上一个目录,然后下到一个名为 script
的目录,然后是一个 javascript 文件。在示例 2 中,您指定了应用程序根目录中包含的 aspx 页面。
因此,与您的具体问题密切相关,您希望将文件写入特定的绝对 路径,这意味着它必须是一个明确的位置。
【讨论】:
在类 Unix 操作系统上,~
通过 shell 扩展到当前用户的主目录 - 所以 ~ 可能不是最好的例子(命令看到的是绝对路径)以上是关于绝对路径和相对路径有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章