在具有node.js的Mac上,Finder别名未被识别为符号链接

时间:2015-10-26 01:17:25

标签: node.js macos node-webkit finder

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

以下代码正在运行,但未将文件夹别名或文件别名识别为符号链接。

我哪里错了?

    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');
                }
            });
        });
    });

1 个答案:

答案 0 :(得分:1)

OS X上的

Finder别名在技术上与符号链接不同。

从文件系统的角度来看,它们是常规文件,只有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'
}

要基于swift解析目标路径的Finder别名,请参阅this answer