大多数fs操作接受的文件路径可以指定为字符串、Buffer或使用file:协议的URL对象。
字符串形式的路径被解析为标识绝对或相对文件名的UTF-8字符序列。相对路径将相对于process.cwd()指定的当前工作目录进行解析。
在POSIX上使用绝对路径的示例如下。
在POSIX上使用相对路径(相对于process.cwd())的示例如下。
使用Buffer指定的路径主要用于将文件路径视为不透明字节序列的某些POSIX操作系统。在这样的系统上,单个文件路径可以包含使用多种字符编码的子序列。与字符串路径一样,Buffer路径可以是相对路径或绝对路径。
在POSIX上使用绝对路径的示例如下。
在Windows上,Node.js遵循每个驱动器工作目录的概念。当使用没有反斜杠的驱动器路径时,可以观察到此行为。例如,fs.readdirSync(c:\\)可能会返回与fs.readdirSync(c:)不同的结果。
对于大多数fs模块的函数,path或filename参数可以传入遵循WHATWG规范的URL对象 。Node.js仅支持使用file:协议的URL对象。以下是使用URL对象的示例。
注意,file:的URL始终是绝对路径。
使用WHATWG规范的URL对象可能会采用特定于平台的行为。如在Windows上,带有主机名的URL转换为UNC路径,而带有驱动器号的URL转换为本地绝对路径。没有主机名和驱动器号的URL将导致抛出错误。观察下面的示例。
带有驱动器号的URL必须使用作为驱动器号后面的分隔符,使用其他分隔符将导致抛出错误。
在其他平台上,不支持带有主机名的URL,使用时将导致抛出错误。
包含编码后的斜杠字符(%2F)的file:URL在所有平台上都将导致抛出错误。
在Windows上,包含编码后的反斜杠字符(%5C)的URL将导致抛出错误。