我無法發現在OS X中使用節點(nodejs)檢測隱藏文件的方法。如何在OS X上使用node.js檢測隱藏文件
當然,我們可以很容易找到「.dot_hidden」文件,但在Mac上,有些文件/文件夾是「受保護的」系統文件,大多數用戶不應該擺弄。在Finder GUI中,當隱藏文件被迫通過「AppleShowAllFiles」顯示時,它們不可見或灰顯。
我也發現到UF_HIDDEN參考:爲0x8000這裏:
使用節點的統計,我們可以返回信息的2個額外的比特可以爲隱藏狀態的線索:
mode: 33188, // File protection.
ino: 48064969, // File inode number. An inode is a file
system data structure that stores
information about a file.
我不是一個十六進制/二進制的人,但它看起來像抓住stat的「ino」屬性,我們可以應用0x8000並確定該文件是否被暗示爲隱藏或不隱藏。
我沒有任何成功的模式上的0x8000掩碼,但確實有一些ino。
下面是我得到了什麼,勾選「伊諾」返回0或1726,當它是1726的文件似乎匹配在OS X中的隱藏文件
var fs = require("fs");
var dir = "/";
var list = fs.readdirSync(dir);
list.forEach(function(f){
// easy dot hidden files
var hidden = (f.substr(0, 1) == ".") ? true : false;
var ino = 0;
var syspath = dir + "/" + f;
if(! hidden){
var stats = fs.statSync(syspath);
ino = parseInt(stats.ino & 0x8000, 8);
// ino yeilds 0 when hidden and 1726 when not?
if(ino || dotted){
hidden = true;
}
}
console.log(syspath, hidden, ino);
});
所以我的問題是,如果我爲了得到正確的結果,在ino值上正確應用0x8000掩碼?
如何解析ino屬性獲取其中包含的所有其他標誌?
好的,謝謝指點。淘汰是昂貴的:(但至少,謝謝你,我有一些有形的工作,謝謝。 – bob