【问题标题】: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);
    }

    //...

有人可以帮我理解一下吗?

【问题讨论】:

    标签: c# path relative-path absolute-path


    【解决方案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 扩展到当前用户的主目录 - 所以 ~ 可能不是最好的例子(命令看到的是绝对路径)
        猜你喜欢
        • 2014-02-13
        • 2012-07-14
        • 2020-11-16
        • 2010-09-15
        • 1970-01-01
        • 2013-12-12
        • 2013-07-14
        • 2010-12-17
        • 1970-01-01
        相关资源
        最近更新 更多