的NodeJS - 检查隐藏文件

问题描述:

我遍历文件的目录,并想知道,如果它可以测试,如果一个文件被隐藏。目前,我只是检查文件是否以'。'开头。或不。这适用于Mac(也可能是Linux),但是,我想知道如何在Windows上执行此操作?此外,期间会隐藏所有类型的Linux文件?的NodeJS - 检查隐藏文件

谢谢!

代码:

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

难道使用节点0.6.x一些快速的测试在Windows 7的设置是包含1个文件夹,1保护,1隐藏和1个文件,而无需特殊属性的文件夹。

我循环这个文件夹进账的统计信息的条目(使用fs.stat(路径,回调)),这些都是结果:

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,这不是在管道中(至少我在一些快速的谷歌搜索后没有发现任何东西)。

对于您的有关文件被隐藏在所有的UNIX口味当一段前缀的问题:我没碰到过一个分布,其中并没有工作来,所以从我的POV:是的。

+0

使用我的Windows桌面上的文件和文件夹进行测试。无论我已经应用了哪些标准属性的组合,所有文件必须的33060的模式和所有文件夹具有16822.模式退房http://stackoverflow.com/questions/13440589/retrieve-file-attributes-from-windows -cmd为使用主机脚本的解决方案。 – 2014-07-31 20:50:44

+1

根据我上面的链接,我写了一个模块来处理隐藏文件简单地说:。https://www.npmjs.org/package/hidefile – 2014-08-03 04:11:22

的正则表达式来有效地检测出隐藏的文件和目录路径在Unix中会更复杂一些,由于他们的存在,长路径字符串中的可能性。

下试图采取同样的照顾。

/** 
* 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); 
}; 
+1

没有为'(/(^工作| \ /)\ + [^\/\。]/g).test('/。DS_Store');' – Izhaki 2015-05-01 00:22:37

+1

@Izhaki - 更新正则表达式。谢谢指出。 – 2015-08-03 21:28:36

+0

隐藏文件是否简单定义为以句点开头? – 2017-02-22 17:53:39