【发布时间】:2021-05-27 11:53:29
【问题描述】:
- NodeJS 版本:v15.6.0
- macOS 版本:v10.15.7
给定以下文件层次结构:
/root
|- /dir1
| |- .another-hidden-file.txt
|
|- /dir2
| |- some-file.txt
|
|- .hidden-file.txt
|- index.js
以及下面的代码(上面的index.js):
const fs = require('fs');
const content = fs.readdirSync(__dirname);
我希望得到以下输出:
console.log(content);
// -> ['dir1', 'dir2', '.hidden-file.txt', 'index.js']
但是得到以下输出:
console.log(content);
// -> ['dir2', 'index.js']
Sync、Async 和 Promises 版本都给出相同的结果。
我还尝试了fs.opendirSync 的较低级别方法,结果相同。
据我所知,隐藏文件应该可以通过fs.readdir 访问。相反,甚至包含这些文件的目录似乎也被忽略了(在上面的示例中为dir1)。
【问题讨论】:
-
ls -la@说什么? -
@georg 它按预期显示所有文件/目录。
-
我明白了。可见文件和隐藏文件的用户/组/权限是否相同?
-
@georg 对 Finder 的“获取信息”下的隐藏/可见文件具有相同的权限。
-
我无法重现该问题。当我测试该代码(macOS 11.4、zsh 5.8、Node v14.16.0)时,我得到了
[ '.hidden-file.txt', 'dir1', 'dir2', 'index.js' ]。
标签: javascript node.js macos file