的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:是的。
的正则表达式来有效地检测出隐藏的文件和目录路径在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);
};
没有为'(/(^工作| \ /)\ + [^\/\。]/g).test('/。DS_Store');' – Izhaki 2015-05-01 00:22:37
@Izhaki - 更新正则表达式。谢谢指出。 – 2015-08-03 21:28:36
隐藏文件是否简单定义为以句点开头? – 2017-02-22 17:53:39
使用我的Windows桌面上的文件和文件夹进行测试。无论我已经应用了哪些标准属性的组合,所有文件必须的33060的模式和所有文件夹具有16822.模式退房http://stackoverflow.com/questions/13440589/retrieve-file-attributes-from-windows -cmd为使用主机脚本的解决方案。 – 2014-07-31 20:50:44
根据我上面的链接,我写了一个模块来处理隐藏文件简单地说:。https://www.npmjs.org/package/hidefile – 2014-08-03 04:11:22