我正在执行一个基本操作,从给定的目录开始遍历文件系统,直到达到根目录。 在Linux / Mac上,根目录显然是 /
,而在Windows上可以是 C:\
或其他驱动器号。我的问题是:Node.js是否有办法识别文件系统的根目录。
目前,我只能通过检查最后一个目录是否等于 path.normalize(dir + "/../")
来判断是否已经到达了根目录。是否存在 process
属性/方法或模块,可以帮助我解决这个问题?
我正在执行一个基本操作,从给定的目录开始遍历文件系统,直到达到根目录。 在Linux / Mac上,根目录显然是 /
,而在Windows上可以是 C:\
或其他驱动器号。我的问题是:Node.js是否有办法识别文件系统的根目录。
目前,我只能通过检查最后一个目录是否等于 path.normalize(dir + "/../")
来判断是否已经到达了根目录。是否存在 process
属性/方法或模块,可以帮助我解决这个问题?
另一个例子,使用 path.parse
。
const path = require('path')
const getRootDir = () => path.parse(process.cwd()).root
var path = require("path");
var os = require("os");
var root = (os.platform == "win32") ? process.cwd().split(path.sep)[0] : "/"
os.platform
作为函数使用,因此您需要执行os.platform()
。 - webketje对于 Node.js 并没有什么特别需要做的,答案是一个简单的正则表达式:
/^([^\\/]*[\\/]).*/.test(process.cwd())
var root = RegExp.$1;
这应该可以获取 Windows 和 Linux 的当前工作目录的根目录。
/^([^\\/]*[\\/]).*/.exec(process.cwd())[1]
更容易阅读。 - Shukri Adams我认为最简单的方法就是检查path.dirname
是否返回与输入路径相同的路径:如果是,则它就是根目录。
const { dirname } = require('path');
// On Linux, MacOS or other POSIX-like file-systems:
dirname("/") === "/" // -> true
// On Windows:
dirname("C:\\") === "C:\\" // -> true
path
将自动解析为 path.win32
或 path.posix
,具体取决于您的系统,因此您不必担心平台兼容性:> path.posix.dirname("/") === "/"
true
> path.win32.dirname("C:\\") === "C:\\"
true
所以如果你想要一个实用函数,你可以这样做:
const isRoot = (path) => dirname(path) === path
...或者如果你想遍历父级直到根节点,你可以这样做:
function parent(path) {
const parentPath = dirname(path);
return parentPath === path ? null : parentPath;
}
let path = process.cwd();
do {
console.log(path);
} while (path = parent(path))
C:\ Users \ Domenic> cd /
。可以直接进入C:\>
目录。 - Domenicprocess.cwd()
开始,也就是基于生成 Node 脚本的线程。 - Dominic Barnes