Nodejs – 检查隐藏的文件

我遍历一个文件的目录,并想知道是否有可能testing一个文件是否隐藏。 目前,我只是检查文件是否以'。'开头。 或不。 这适用于Mac(和Linux,也许),但是,我想知道如何在Windows上做到这一点? 另外,期间会隐藏所有types的Linux文件?

谢谢!

码:

var fs = require('fs'); fs.readdir('/path', function(err, list) { list.forEach(function(filename){ var isHidden = /^\./.test(filename); // etc ... }); }); 

在Unix中有效地检测隐藏文件和目录path的正则expression式由于它们存在于长pathstring中的可能性而会稍微复杂一些。

以下尝试照顾相同。

 /** * Checks whether a path starts with or contains a hidden file or a folder. * @param {string} source - The path of the file that needs to be validated. * returns {boolean} - `true` if the source is blacklisted and otherwise `false`. */ var isUnixHiddenPath = function (path) { return (/(^|\/)\.[^\/\.]/g).test(path); }; 

在Windows 7上使用节点0.6.x进行了一些快速testing。安装程序是一个包含1个文件夹,1个保护,1个隐藏和1个没有特殊属性的文件的文件夹。

我打开这个文件夹并获取条目的统计信息(使用fs.stat(path,callback)),结果如下:

 testfolder fs.Stats.mode: 16895 test_hidden.txt fs.Stats.mode: 33206 test_norm.txt fs.Stats.mode: 33206 test_prot.txt fs.Stats.mode: 33060 

正如你所看到的,可以通过模式区分受保护和隐藏/正常文件,但隐藏属性实际上是一个真正的属性,与文件模式无关。

为了可靠地识别Windows上的隐藏文件,node.js团队必须在Windows上实现GetFileAttributes()API(就像它由C ++或C#完成的那样)。 AFAIK,这不是在pipe道中(至less我发现一些快速谷歌search后)。

对于你的问题,关于文件被隐藏在所有types的unix当前缀的时期:我没有遇到一个分配,这不起作用,所以从我的pov:是的。