【问题标题】:Do all file paths follow the same principles / conventions across different programming languages是否所有文件路径都遵循不同编程语言的相同原则/约定
【发布时间】:2017-07-28 11:34:49
【问题描述】:

我发现开始编程时最大的挑战之一是掌握文件路径。例如,当您在目录结构中引用位于同一级别的文件夹中的路径时,您会看到:

/folder/style.css 或

文件夹/style.css 等

当您引用不同的文件时,所有编程语言的原则是否相同?是否有任何命名约定或陷阱需要注意?

为什么在升级时有时会看到单点“./”,有时会看到双点“../”?

我似乎找不到任何关于这方面的教程,我猜这可能是计算机科学课程中的标准内容之一,但如果你是自我,很难获得具体信息- 自学/自学。

艾米丽。

【问题讨论】:

  • wikipedia 上有一篇不错的文章。文件路径往往取决于操作系统,文件访问编程是另一回事。
  • 我从来没有见过一个点 ./ 表示向上移动。你在哪里看到的?

标签: javascript php path call


【解决方案1】:

不同语言的文件路径约定不一样。

像 C 这样的旧语言根本没有任何约定。他们只是从操作系统中暴露了 API。例如,类 Unix 操作系统上的绝对路径可能是 /usr/chewy/stuff.txt,而在 Windows 上则是 C:\Users\chewy\stuff.txt

他们这样做主要有两个原因:首先,这样做更容易,其次(更重要的是)让用户在使用以该语言编写的程序时,可以使用他们在操作系统上学到的约定。 unix 用户不需要输入 Windows 样式的路径,类似地,Windows 用户希望文件路径看起来像 Windows 文件路径。

在一些较新的语言中,默认文件路径是 Unix 样式 /a/b/c。它们仍然支持 Windows 样式的路径,但用户也可以在 Windows 上输入 unix 样式的路径,并且它仍然有效(在大多数情况下,/ 映射到 C:\,除非像 F:/ 那样明确更改将映射到 F:\)。

在一些更新的语言中走得更远。他们对文件路径使用 URI 语法,所以在内部你会看到file://home/chewy/stuff.txt。这几乎同时从两个方向发展:基于 Web 的软件,如 Web 浏览器和 Plan 9 操作系统(诚然,Plan 9 可能也受到 Web 开发的影响)。

相对路径

语言如何处理相对路径取决于它支持的约定类型。对于没有约定的语言,相对路径的工作方式与它在您的操作系统上的工作方式相同。因此对于 Windows,您需要学习 Windows 文件路径约定,而对于 Unix,您需要学习 unix 文件路径约定。

对于在 unix 样式文件路径上进行内部标准化的语言,它们也会实现 unix 文件路径约定。但是,并非所有语言都实现所有标准的 unix 约定。例如,Tcl 支持~ 引用用户的主目录,但大多数其他语言不支持。

对于使用 URI 语法的语言,您需要了解 URI 如何处理相对路径。它实际上包含在定义 URI 语法的 RFC 中:https://www.rfc-editor.org/rfc/rfc3986

常用约定

.. 文件指的是 Unixen、Windows 甚至 URI 语法上的父目录。因此,无论语言或操作系统如何,您都会经常看到这一点。

路径开头的. 指的是Unix 和Windows 上的当前工作目录。在 URI 语法中,. 只是从路径中删除。

进一步阅读

我强烈建议您了解操作系统的文件路径约定。十年前,我没想到有人会问这个问题,因为如果他们可以访问网站,那么他们就会知道如何浏览文件系统。这些天我很少看到 Windows 用户访问 cmd.com(还是叫 cmd.com 吗?)。

此外,我还建议学习 URI 语法,因为这是我经常看到初学者误解的事情之一。

【讨论】:

    【解决方案2】:

    我发现它们在我处理过的语言(javascript、html、php、android、c#、css)中非常相似,有转义字符和相对路径似乎不同的警告。 . 但总的来说,如果不是完全同义的话,它们几乎是同义词....

    我知道这不是一个完整的答案,但完整的答案可能是一本书......

    【讨论】:

      【解决方案3】:

      当您引用不同的文件时,所有编程语言的原则是否相同?是否有任何命名约定或陷阱需要注意?

      基本原则通常取决于操作系统,而不是编程语言。例如,在 Windows 上,您可能会得到 \ 而不是 /,并且每个“驱动器”都有一个“当前目录”。

      一些编程语言通过让窗口表现得像世界其他地方一样为您解决问题。 OS X 和 Linux 基本相同(但在字符编码等方面存在差异)。

      为什么在升级时有时会看到单点“./”,有时会看到双点“../”?

      单点always当前目录,双点always父目录 大多数主要操作系统上的目录,包括 Windows、Linux、BSD 和 OS X。

      【讨论】:

      • 我注意到在某些情况下您可以使用 .../ 向上移动 2 个级别,而在其他情况下您必须使用 ../../
      • 我自己没见过。有参考资料吗?
      • "一个点总是指向当前目录..."。我认为您在那里表现出对 UNIX 的偏见。 ;-) 在某些情况下,它用作分隔符,例如使用“/”或“\”或“:”(例如 OpenVMS)。
      • 哪些操作系统使用该@RobG?我知道这对三巨头来说是正确的。我会修改我的答案
      • 好吧,我收回了,看来我精神崩溃了:en.wikipedia.org/wiki/Path_(computing)
      猜你喜欢
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      相关资源
      最近更新 更多