gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 00:49:03 24 4
gpt4 key购买 nike

我正在运行一个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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com