node.js - 在使用 Node.js 的 Mac 上,Finder 别名无法识别为符号链接(symbolic link)

标签 node.js macos node-webkit finder

我正在运行一个nodewebkit应用程序,并且我想在文件夹中搜索别名。

以下代码可以工作,但无法将文件夹别名或文件别名识别为符号链接(symbolic link)。

我哪里错了?

    var path = '/Users/test/Desktop/testfolder';
    var fs = require('fs');
    fs.readdir(path, function(err, files) {
        if (err) return;
        files.forEach(function(f) {
            var newPath = path + '/' + f;
            console.log("looking for "+ newPath +" symlink: "+fs.lstatSync(path).isSymbolicLink());
            fs.lstat(newPath, function(err, stats){
                if(err){
                    console.log(err);
                }
                if(stats.isFile()){
                    console.log('is file mofo',f);
                }
                if(stats.isDirectory()){
                    console.log('is Directory mofo',f);
                }
                if(stats.isSymbolicLink()){
                    console.log('is symbolic link');
                }
            });
        });
    });

最佳答案

OS X 上的Finder 别名在技术上与符号链接(symbolic link)不同。

从文件系统的角度来看,它们是常规文件,只有 Finder 本身和 OS X 特定的 API 知道如何处理它们 - Node.js 没有内置的 API。

如果调用shell - 这会很慢 - 是一种选择,您可以尝试以下操作:

function isFinderAlias(path) {
  var contentType = require('child_process')
        .execFileSync('mdls', 
          [ '-raw', '-name', 'kMDItemContentType', path ], { encoding: 'utf8' })
  return contentType === 'com.apple.alias-file'
}
<小时/>

有关将 Finder 别名解析为其目标路径的基于 swift 的方法,请参阅 this answer .

关于node.js - 在使用 Node.js 的 Mac 上,Finder 别名无法识别为符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33337057/

相关文章:

javascript - 如何设置窗口的高度而不用担心标题栏?

javascript - 提及在机器人状态中具有特定角色的用户

javascript - 用户密码确认到位后如何将虚拟数据播种到 Mongoose 数据库

node.js - 无法在 ARMv7 Raspberry pi 上执行 "sudo npm install serialport"

ruby-on-rails - 在 Mac 上为 Rails 设置 PostgreSQL

node.js - 如何在 Node Webkit 中运行外部 exe?

node.js - 为什么node-webkit中的errno与Node.js不同?

javascript - 带有 Express 和 Jade 模板的 Node.js 不显示 leaflet.js map

macos - Mac OS X 终端 : Run Song when Computer is Asleep?

xcode - 在 Mac 上使用 OpenGL ES 函数