当前位置:  开发笔记 > 编程语言 > 正文

检查node.js中是否存在符号链接

如何解决《检查node.js中是否存在符号链接》经验,为你挑选了1个好方法。

关键问题是,如果符号链接指向的源文件不存在,但(现在已死)符号链接仍然存在,fs.exists(symlink)则将返回false.

这是我的测试用例:

var fs = require("fs");

var src = __dirname + "/src.txt";
var dest =  __dirname + "/dest.txt";

// create a file at src
fs.writeFile(src, "stuff", function(err) {
    // symlink src at dest
    fs.symlink(src, dest, "file", function(err) {
        // ensure dest exists
        fs.exists(dest, function(exists) {
            console.log("first exists", exists);
            // unlink src
            fs.unlink(src, function(err) {
                // ensure dest still exists
                fs.exists(dest, function(exists) {
                    console.log("exists after unlink src", exists);
                });
            });
        });
    });
});

结果是:

first exists true
exists after unlink src false // symlink still exists, why is it false??

出现问题是因为我想创建一个符号链接(如果它不存在),或者取消链接并重新创建它(如果存在).目前我正在使用fs.exists来执行此检查,但遇到了这个问题.除了没有同样问题的fs.exists之外还有什么选择?

在Windows 7上的CentOS Vagrant上使用节点10.



1> Peter Lyons..:

请尝试使用fs.lstat和fs.readlink.lstat即使目标不存在,也readlink应该为符号链接提供stats对象,并且应该为您提供目标的路径,这样您就可以组合该逻辑来正确识别断开的链接.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有