绝对路径和相对路径有什么区别?

15

我问这个问题是因为我正在为学校的一个项目工作。是的,这是一项作业。但是,我想更好地理解一些东西。

这是被问到的一个例子。

• 当用户点击“保存”按钮时,将所选记录写入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);
    }

    //...

有人能帮我理解这个吗?

3个回答

34

假设你在指路时,有两种方法可以描述目的地的位置:

  • 相对于你所处的位置,
  • 相对于一个地标。

这两种方法都可以让你到达同一个位置,但前者并不总是有效的(例如“向左转,然后向右转,经过两个红绿灯再向右转”可能不适用于从下一个城镇过来的人,但对于站在原地的人却可行)。那就是区别所在。

如果你拥有 C:\Windows\System32,那么这是一个绝对路径。如果你只有 Windows\System32,那么它只会在你从C:\ 开始时工作。如果你从C:\Program Files开始,你需要使用 ..\才能正确到达目的地。

无论你在硬盘上的哪个位置,C:\Windows\System32\都是到达该文件夹的明确路径。


10

实际上,这是一个简单的区别。相对路径是基于根节点的结构;而绝对路径是基于非歧义位置的结构。听起来有些奇怪,但实际上很简单。

以下是一些示例:

绝对路径

 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扩展为当前用户的主目录 - 因此,~可能不是最好的示例(该命令会看到绝对路径)。 - Gert van den Berg

5

绝对路径是访问文件系统中位置所需的完整路径名。
例如:C:\Program Files\Internet Explorer\iexplorer.exe

而相对路径是与某个标志物相关的,通常是您的主可执行文件位置或打开程序时设置的“起始位置”位置。

例如,如果您的主可执行文件在C:\Program Files\中,则到iexplorer.exe的相对路径为Internet Explorer\iexplorer.exe

这通常在您不总是知道文件将绝对存在于何处(例如安装在哪个驱动器字母下或哪个文件夹下)时使用。

但是,对于一个很好的例子,如果您的文件随同您的程序一起提供,并且您知道您的程序安装结构,则可以使用相对路径来查找所有文件,而不管您的程序安装在哪里,而不是使用绝对路径,其中每次都需要在完全相同的位置安装您的程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接