问题标签 [readdir]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - 如何按排序顺序读取目录中的文件?
当我在 Perl 中使用opendir
、readdir
和读取目录时closedir
,该readdir
函数似乎没有以任何特定顺序读取文件(我可以说)。
我正在阅读一个目录,其中包含以纪元时间戳命名的子目录:
我想按数字顺序读取这些目录,这会将最旧的目录放在第一位。
当我使用readdir
时,它读取的第一个是 1228324260,它是中间的。我知道我可以将目录内容放在一个数组中并对数组进行排序,但是我可以传递一个选项来readdir
按排序顺序读取吗?或者也许比将所有内容推入数组并对数组进行排序更优雅的方式来实现这一点?可能也有模块可以做到这一点,但是很难在我们的环境中安装模块,所以除非它是一个内置模块,否则我宁愿不使用模块......
谢谢!
编辑 按要求,我发布了我正在使用的代码:
php - 日文文件名的php readdir问题
我有以下代码
当它确实有 mb 语言(如日语)时,它无法正常显示,而是显示为 kyuukyoku Choujin R ?????~? 而不是 kyuukyoku Choujin R 研极超人あ~る</p>
无论如何让它显示正确的名称或让它仍然可以被其他人下载?
谢谢你帮助我:)
performance - 如何为包含 250,000 个文件的目录加速 Perl 的 readdir?
我正在使用 Perl readdir 来获取文件列表,但是,该目录包含超过 250,000 个文件,这导致执行 readdir 的时间很长(超过 4 分钟)并使用超过 80MB 的 RAM。由于这是每 5 分钟重复一次的工作,因此这种延迟时间是不可接受的。
更多信息:另一个作业将填充正在扫描的目录(每天一次)。这个 Perl 脚本负责处理文件。为每个脚本迭代指定一个文件计数,当前每次运行 1000 个。Perl 脚本每 5 分钟运行一次并处理(如果适用)多达 1000 个文件。文件计数限制旨在允许下游处理跟上 Perl 将数据推送到触发复杂工作流程的数据库。
是否有另一种从目录中获取文件名的方法,理想情况下限制为 1000(由变量设置),这将大大提高该脚本的速度?
perl - readdir() 的“0”结果如何在一段时间内不为假?
另请参阅:文档中的什么地方说,虽然测试 readdir 的定义?. (不是重复的;只是密切相关。)
许多人将下面的循环视为惯用的:
代替:
因为如果文件名只是“0”(零),它应该终止循环,而当没有更多文件时它返回“undef”。
然而,在过去的某个时候,这个测试defined()
不再是必要的——似乎有特殊情况的代码允许后一个版本无论如何都可以工作。
我想知道这是如何工作的?
奇怪的是,如果我将调用替换为readdir()
调用foo()
:
然后代码会按照我的预期进行,并在找到名为“0”的文件时终止循环。
(在 MacOS X 10.5.6 上使用 Perl 5.8.9 测试)
perl - 如何在 Perl 中读取多个目录并读取子目录的内容?
我有一个文件夹,里面有很多子文件夹。在这些子文件夹中,我有许多要读取的 .html 文件。我已经编写了以下代码来做到这一点。它打开父文件夹和第一个子文件夹,它只打印一个 .html 文件。它显示错误:
我不想更改整个代码。对现有代码的任何修改都对我有好处。
visual-studio - Microsoft Visual Studio:opendir() 和 readdir(),怎么样?
我之前在我的 Dev-cpp 中使用过这种代码:
但是现在我正在使用 MSVC++,我不知道如何在那里添加这些文件,我试图在那里复制 dirent.h/dir.h/errno.h,但它给出了另一个与这些文件中的另一个包含文件相关的错误.. .,通过查看文件,我看到了 mingw 的东西,所以它的编译器相关?idk MSVC++ 使用什么编译器,但是是否可以在 MSVC++ 中复制粘贴这些文件并使其正常工作?
我试图从 MSDN 查找一些代码,但它真的搞砸了,所以我希望我可以使用上面的这些功能......
perl - 按模式过滤文件名
我需要在以特定模式开头的目录中搜索文件,比如“abc”。我还需要消除结果中以“.xh”结尾的所有文件。我不确定如何在 Perl 中进行操作。
我有这样的事情:
我还需要从结果中删除所有以“.xh”结尾的文件
谢谢,毕
php - 为什么 $count 不更新?
我认为这与这条线有关:
但我不确定
php - PHP readdir 和排序
我正在做一个小画廊。在删除了一些前导数字和文件扩展名之后,我想从目录中读取文件名并打印下面的文件名。
我有两个版本的代码。
版本 1 未排序
版本 2 排序,但我无法操作文件名
是的,我知道我很笨。啊!
perl - 在 Perl 中有什么理由更喜欢 glob 而不是 readdir(反之亦然)?
这个问题是从这个问题衍生出来的。一些历史:当我第一次学习 Perl 时,我几乎总是使用glob
而不是opendir
+ readdir
,因为我发现它更容易。后来各种帖子和阅读表明这glob
很糟糕,所以现在我几乎总是使用readdir
.
在考虑了最近的这个问题后,我意识到我选择一个或另一个的原因可能是愚蠢的。所以,我将列出一些优点和缺点,我希望更有经验的 Perl 人员能够加入并澄清。简而言之,问题是是否有令人信服的理由偏爱glob
或readdir
(readdir
在glob
某些或所有情况下)?
glob
优点:
- 没有点文件(除非你要求他们)
- 保证物品顺序
- 无需手动将目录名称添加到项目上
- 更好的名字(来吧 -如果我们仅凭名字来判断,那就没有竞争了
glob
)readdir
(来自 ysth 的回答;参见
/li>glob
下面的 cons 4)可以返回不存在的文件名:
glob
缺点:
- 旧版本只是简单的损坏(但“旧”是指 5.6 之前的版本,我认为,坦率地说,如果你使用的是 5.6 之前的 Perl,你会遇到更大的问题)
stat
每次调用(即stat
在大多数情况下无用使用)。- 目录名称中的空格问题(这仍然是真的吗?)
(来自布赖恩的回答)可以返回不存在的文件名:
/li>
readdir
优点:
- (来自布赖恩的回答)
opendir
返回一个文件句柄,您可以在程序中传递(并重用),但glob
只返回一个列表 - (来自布赖恩的回答)
readdir
是一个合适的迭代器,并提供函数到rewinddir
,seekdir
,telldir
- 快点?(基于上面的一些
glob
特性的纯粹猜测。无论如何我并不担心这种优化水平,但它是一个理论上的专业人士。) - 比 ? 更不容易出现边缘情况错误
glob
? - 默认情况下读取所有内容(也是点文件)(这也是一个骗局)
- 可能会说服您不要命名文件
0
(也是一个骗局 - 参见布拉德的回答) - 任何人?布勒?布勒?
readdir
缺点:
- 如果您不记得添加目录名称,当您尝试进行文件测试或复制项目或编辑项目或...
- 如果你不记得
grep
出.
和..
项目,当你计算项目时你会得到一点,或者尝试递归地沿着文件树走或者...... - 我有没有提到在目录名称前面加上前缀?(旁注,但我在 Perl Beginners 邮件列表中的第一篇文章是经典的,“为什么涉及文件测试的代码在某些时候不起作用?”与这个问题相关的问题。显然,我仍然很痛苦。)
- 退回的物品没有特定的顺序。这意味着您通常必须记住以某种方式对它们进行排序。(如果它意味着更快的速度,并且如果它意味着您真正考虑如何以及是否需要对项目进行排序,这可能是一个专业人士。)编辑:非常小的样本,但在 Mac
readdir
上按字母顺序返回项目,不区分大小写。在 Debian 机器和 OpenBSD 服务器上,顺序是完全随机的。我用 Apple 的内置 Perl (5.8.8) 和我自己编译的 5.10.1 测试了 Mac。Debian 机器是 5.10.0,OpenBSD 机器也是。我想知道这是否是文件系统问题,而不是 Perl? - 默认情况下读取所有内容(也是点文件)(这也是专业人士)
- 不一定能很好地处理名为的文件
0
(另见专业人士 - 见布拉德的回答)