在开始编程时,我发现最大的挑战之一是如何处理文件路径。例如,当您引用目录结构中位于同一级别的文件夹中的路径时,您将看到以下任一项:
/文件夹/style.css或
文件夹/样式. etc等
当您引用不同的文件时,所有编程语言的原则是否相同,是否有任何命名约定或问题需要注意?
为什么有时你会看到一个单点'./‘,有时你会看到一个双点'../’当你向上移动一个水平时?
我似乎找不到任何关于这方面的教程,而且我猜这可能是计算机科学课程中的一个错误标准,但如果你是自学/自学的话,很难获得具体的信息。
艾米丽。
发布于 2017-03-08 03:57:23
文件路径约定在不同语言中是不一样的。
像C这样的老语言根本就没有约定。他们只是从操作系统中公开了API。例如,在类似Unix的OSes上,绝对路径可以是/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操作系统(诚然,计划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语法,因为这是我经常看到初学者误解的事情之一。
发布于 2017-03-08 03:09:33
当您引用不同的文件时,所有编程语言的原则是否相同,是否有任何命名约定或问题需要注意?
基本原则通常是操作系统相关的,而不是编程语言依赖的.例如,在Windows上,您可能会得到一个\,而不是一个/,并且每个“驱动器”都有一个“当前目录”。
不过,有些编程语言通过使windows的行为与世界其他地方一样,为您提供了方便。OS和Linux基本上是一样的(但在字符编码等方面存在差异)。
为什么有时你会看到一个单点'./‘,有时你会看到一个双点'../’当你向上移动一个水平时?
单个点总是指当前目录,而双点总是指大多数主要操作系统上的父目录,包括Windows、Linux、BSD和OS。
发布于 2017-03-08 03:11:40
我发现它们在我所处理的语言(javascript、html、php、android、c#、css)中非常相似,在转义字符和相关路径方面有一些警告,它们似乎是不同的……但总的来说,它们几乎是同义词.
我知道这不是一个完整的答案,但一个完整的答案可能是一本书.
https://stackoverflow.com/questions/42662212
复制相似问题