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

我问,因为我正在为学校做项目。 是的,这是功课。 但是,我试图了解更多一点。

这是被问到的一个例子。

•当用户单击“保存”按钮时,将所选记录写入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:\Windows\System32 ,那就是绝对路径。 如果你有Windows\System32 ,它只会在你从C:\ 开始工作。 如果你从C:\Program Files开始,你需要一个..\来正确到达那里。

但是,无论您在硬盘驱动器上的哪个位置, C:\Windows\System32\都是到达该文件夹的权威方式。

这实际上是一个简单的区别。 相对文件路径将是基于根节点的结构; 并且绝对路径将是基于非模糊位置的结构。 这听起来有点不稳定,但实际上非常简单。

这里有些例子:

绝对路径

  C:\inetpub\yourapplication\default.aspx http://www.yourapplication.com/default.aspx 

这些路径是绝对的,因为它们不含糊。 示例1显示了绝对文件路径,示例2显示了绝对URL。

相对路径

 ./../script/something.js ~/default.aspx 

相对路径基于一些已知的前方参考点指定位置。 所以在示例1中,您知道上一个目录,然后下到一个名为script的目录,然后到一个javascript文件。 在示例二中,您指定了应用程序根目录中包含的aspx页面。

因此,与您的特定问题密切相关,您希望将文件写入特定的绝对路径,这意味着它需要是一个非模糊的位置。

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

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

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

这通常是在您不总是知道文件绝对位置的情况下完成的,例如它将安装在哪个驱动器盘符或它将在哪个文件夹中。

但是举一个很好的例子,如果你的文件附带了你的程序并且你知道你的程序安装结构,你可以使用相对路径来查找所有文件,无论你的程序安装在哪里,而不是你的程序需要的绝对路径每次安装在完全相同的位置。