我正在迭代一个文件目录,想知道是否有可能测试一个文件是否被隐藏。目前,我只是检查文件是否以“.”开头。这在Mac(和Linux,也许),但是,我想知道我将如何在Windows上做到这一点?此外,句号是否会在所有Linux版本中隐藏文件?
谢谢!
代码:
var fs = require('fs');
fs.readdir('/path', function(err, list) {
list.forEach(function(filename){
var isHidden = /^\./.test(filename);
// etc ...
});
});
3条答案
按热度按时间6rvt4ljy1#
在Unix中,有效检测隐藏文件和目录路径的正则表达式可能会更复杂一些,因为它们可能存在于长路径字符串中。
下面的内容试图解决同样的问题。
wn9m85ua2#
在Windows 7上使用节点0.6.x进行了一些快速测试。安装程序是一个包含1个文件夹、1个受保护文件夹、1个隐藏文件夹和1个没有特殊属性的文件夹。
我循环了这个文件夹并获取了条目的统计数据(使用fs.stat(path,callback)),以下是结果:
正如您所看到的,可以通过模式区分受保护和隐藏/普通文件,但隐藏属性实际上是一个真实的属性,与文件模式无关。
为了可靠地识别Windows上的隐藏文件,node.js团队必须在Windows上实现GetFileAttributes()API(就像C++或C#所做的那样)。AFAIK,这不是在管道中(至少我在一些快速谷歌搜索后什么也没找到)。
对于你的问题,当前缀是句点时,文件被隐藏在所有风格的unix中:我没有遇到一个发行版,这不起作用,所以从我的POV:是的。
tsm1rwdh3#
我建议使用另一篇文章中的一条评论中提到的解决方案,而不是一个硬过滤器,并且主要限于以点开头的文件:
https://github.com/sindresorhus/junk
通过这个模块的优点是它是可扩展的:如果有人添加了另一个文件命名方案,您也将从中受益。
代码示例: