我正在运行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');
}
});
});
});
答案 0 :(得分:1)
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。