问题标签 [dirent.h]

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.

0 投票
2 回答
2723 浏览

c - 获取目录中文件的大小

我试图通过使用 dirent.h 标头来获取目录中文件的大小。然而

总是返回-1,我无法正确获得大小。可能是什么原因?

0 投票
3 回答
222 浏览

c - 使用 C,我如何知道文件何时创建?

我正在为 linux 编写一个 C 程序,该程序在一段时间内每 x 秒扫描一次目录以进行修改,但是我无法找出文件或目录的创建时间。以下是我考虑的几个选项:

  • 使用 stat 结构,检查最后状态更改和数据修改时间戳是否相同。这带来了一个问题,您可以创建一个文件,在程序有机会检查它之前对其进行修改,这会更改数据修改时间戳并且不再将其视为新文件。

  • 记录目录中每个文件/目录的名称并检查新的。这有一个问题,您删除一个文件然后创建一个具有相同名称的新文件,它不会被解释为一个新文件。

  • 记录文件/目录的数量。与上一个想法类似的问题。

话虽如此,有人知道我如何唯一地识别文件/目录的创建吗?

0 投票
3 回答
7233 浏览

c++ - c++,列出所有文件,windows上的dirent.h

在 C++ 中,列出 Windows 上目录的所有文件的最佳方法是什么?

在 Linux 或使用 gcc(例如 MingW)的 Windows 上,使用 dirent.h 很容易,但是当 dirent.h 不可用时(例如 Visual Studio)在 Windows 上执行此操作的最佳方法是什么?

我是否应该强迫人们在他们的 Visual Studio 中添加一个免费提供的 dirent.h 实现?或者我应该写一个替代代码来读取文件?如果是这样,最好的代码是什么?

谢谢。

0 投票
3 回答
5181 浏览

c - 为什么 C readdir 手册页说不要在静态分配的结果结构上调用 free

$ unname -a

$ 人读目录:

描述

readdir() 函数返回一个指向 dirent 结构的指针,该结构表示 dirp 指向的目录流中的下一个目录条目...

..[剪辑]...

readdir_r() 函数是 readdir() 的可重入版本...

...[剪辑]...

返回值

成功时, readdir() 返回一个指向不同结构的指针。(此结构可能是静态分配的;不要尝试释放(3)它。)如果到达目录流的末尾,则返回 NULL 并且不更改 errno。如果发生错误,则返回 NULL 并适当设置 errno。

readdir_r() 函数在成功时返回 0。出错时,它返回一个正的错误号。如果到达目录流的末尾,readdir_r() 返回 0,并在 *result 中返回 NULL。

我对这意味着什么感到困惑,我对该函数的应用是收集一个动态分配的指向结构的指针数组,其中包含有关目录条目的数据,我想知道我是否可以动态分配不同的结构并设置指向它们的指针. 但是这条线接缝说结果永远不应该被free调用,所以我想知道我是否应该分配一个单独的dirent struct,它将成为列表的一部分并将其memcpy到返回的结果上。

我也对上述手册页中的“可能”术语感到困惑。这是否意味着有时它是静态分配的,有时不是。

我(模糊地)熟悉静态变量在 C 中的含义,但不确定所有规则和可能的陷阱。因为我想传递目录中的不同结构,所以我宁愿动态分配它。这是 readdir_r 的用途吗?还是将双指针设置为指向另一个静态分配的 dirent 结构?

而且我不完全确定在这种情况下对于 readdir_r 的重入意味着什么。我对 renetrant 的理解仅来自方案协程,我不确定这将如何应用于读取 unix 目录。

0 投票
1 回答
139 浏览

c - 使用文件系统的最佳方式?

在 C 中使用文件系统的最佳方式是什么?

当然有dirent.h,但据我所知,它并不能完全保证在所有平台和编译器上都可用,例如 Microsoft Visual C++ 编译器不支持它。

目前,我见过的最好的东西是 GLib 中的文件处理函数。有没有更好的办法?

我正在寻找的是一个设计良好的,最好是跨平台的库/代码/所有主流编译器都支持的其他东西,并且有据可查。有任何想法吗?

0 投票
1 回答
706 浏览

c++ - 以下递归目录搜索和文件打开有什么问题?

我正在尝试访问一个目录中的所有文件,并对这个目录和后续目录下的文件做一些事情。对于这个操作,我在 windows 中使用了 dirent.h,它设法获取所有文件并打开和关闭这些文件。我的问题是,当我尝试从他们那里读取一些内容并写入另一个内容时,如下所示,我得到了最后显示的错误。

这是代码:

它设法打开并读取第一个文件,但在第一个文件之后它将显示以下错误并打开dbgheap.c

HEAP[direntdir.exe]:指定给 RtlValidateHeap(002C0000, 002C5718) 的地址无效 Windows 已在 direntdir.exe 中触发断点。

这可能是由于堆损坏,这表明 direntdir.exe 或其已加载的任何 DLL 中存在错误。

这也可能是由于用户在direntdir.exe 获得焦点时按了F12。

输出窗口可能有更多诊断信息。

编辑:用buf变量纠正了错误。

现在我明白了

调试断言失败!

...表达式:(缓冲区!=NULL)...

0 投票
1 回答
768 浏览

c++ - c++/ 寻找有关目录和文件的文档(如dirent.h)?

我正在寻找有关将文件和目录实现到 C++ 程序中的 C++ 代码的文档。

我喜欢去 cplusplus.com 因为他们有文档和示例,但是我在 dirent.h 上找不到文档,我什至不确定它是否很棒。

我正在寻找一个能够查看目录内部的程序,这意味着获取其中的文件和子目录的列表,以及能够获取此类内容的修改/创建日期。我在 Ubuntu Linux 中编程。

0 投票
1 回答
2063 浏览

c++ - 新的, 试图访问目录中的数据

我以前从未使用dirent.h过。我正在使用 istringstream 读取文本文件(单数),但需要尝试修改程序以读取目录中的多个文本文件。这是我尝试实现 dirent 的地方,但它不起作用。

也许我不能将它与字符串流一起使用?请指教。

为了便于阅读,我已经去掉了我用单词做的蓬松的东西。这对一个文件非常有效,直到我添加了 dirent.h 的东西。

0 投票
2 回答
4916 浏览

c - 获取目录中的文件列表

我正在开发一个 C 项目,我需要在其中获取目录中的文件列表。我正在使用 dirent.h,但在让它工作时遇到了一些问题,我正在 Linux 下构建程序。

当我尝试构建程序时,出现以下错误

下面是我正在使用的代码

我不明白这些错误是什么意思,特别是当它说 DIR 在我包含 Liunux 的 dirent.h 头文件时未声明时。

谢谢你的帮助。

0 投票
1 回答
1242 浏览

c++ - 使用dirent.h阅读时如何跳过目录

我正在尝试使用dirent.h中提供的功能递归打开文件

我的问题是:我无法跳过无法打开的目录。我希望它打开它可以打开的目录并跳过它不能打开的目录并移动到下一个目录而不是失败退出。我应该怎么做才能解决这个问题?

这是我尝试使用的简单代码

我使用了相同的样式windows 7,它工作正常。但是它崩溃了windows xp,当我调试它时,我发现它在尝试打开时崩溃了"system volume information"。我真的不需要访问这个文件夹,我希望是否有任何方法可以跳过它。

这是我的真实代码:

它有点长。