回答
从标签中,我假设你想在符合POSIX的系统中做到这一点。在这种情况下的文件夹中列出文件的代码片段是这样的:
#include <dirent.h>
#include <sys/types.h>
#include <stdio.h>
DIR* dp;
struct dirent* ep;
char* path = "/home/mydir";
dp = opendir(path);
if (dp != NULL)
{
printf("Dir content:\n");
while(ep = readdir(dp))
{
printf("%s\n", ep->d_name);
}
}
closedir(dp);
要检查文件创建或修改时间,使用stat
(男子2 STAT)。要删除文件,只需使用功能remove(const char* path)
我不完全确定删除开放目录中的文件是安全的(因为扫描的目录是在扫描时更新)。我的建议是两次完成:第一次扫描,找到要删除的文件,第二次删除它们。 –
这是非常好的评论。但是,在这种情况下,您必须在删除之前完成扫描,因为OP要删除最旧的文件(您必须检查所有文件才能找到最早的文件)。 – Patryk
在Linux(以及任何POSIX系统)上,您可以通过调用opendir()
/readdir()
/closedir()
来阅读目录。然后,您可以在每个目录条目上调用stat()
以确定它是否是文件,以及它的访问/修改/状态更改时间。
如果您对“最老”的定义取决于文件的创建时间,那么您就不稳固了 - 传统上UNIX并没有记录创建时间。在Linux上,一些最新的文件系统通过扩展属性file.crtime
(您使用getxattr()
从sys/xattr.h
访问)提供扩展属性,但您必须处理该属性不存在的常见情况。
- 1. 从目录中删除图像,并从目录中删除它们的链接
- 2. PHP来列出目录中的文件,并链接到它们
- 3. 在列表框中列出目录文件并将它们打开
- 4. 从列表中删除项目不从RecyclerView中删除它们?
- 5. 删除文件并从列表中删除它的名字
- 6. 目录中的PHP列表文件,并带有删除选项
- 7. 遍历目录中的文件,并把它们合并蟒蛇
- 8. PHP列出目录,并删除..和
- 9. PHP - 通过超链接删除目录中列出的文件
- 10. 清除NAnt中的所有子目录但不删除它们
- 11. 在一个目录中删除数百万个文件而不一次全部列出它们
- 12. 多文件上传并将它们存储在目录中
- 13. 转换文件并将它们放在另一个目录中
- 14. 删除文件及其父目录,如果它们为空。 (Java)
- 15. 删除旧文件并登录它
- 16. 列出并删除档案中的目录
- 17. 递归:检查目录中的文件并阅读它们
- 18. 遍历给定目录中的python文件并导入它们?
- 19. 比较嵌套在列表中的类似项目,并将它们删除
- 20. jquery从外部文件中删除标签并保存它们
- 21. 提示的文件/目录中删除
- 22. 如何删除目录中的文件
- 23. 删除目录中的所有文件
- 24. 删除数据目录中的文件
- 25. 删除目录中的空文件夹
- 26. 列出文件并使用bash在菜单中显示它们
- 27. 在一个目录中找到一个特定的文件并删除目录
- 28. 删除不在包含目录名称列表的文件中的目录
- 29. Bash:在文本文件中列出的文件循环并移动它们
- 30. 创建目录并最终删除它
Plain C没有任何目录的概念,因此您需要指定您想要执行此操作的操作系统。 – caf
Linux 2.6.x内核 – Kitcha
@caf:实际上,纯C(这似乎暗示了编程语言本身)甚至没有关于文件或其他任何事物的概念。 C由大约32个关键字组成,几个操作员就是这样。所有这些文件,目录等概念都是在库中定义的。所以如果你不是指语言定义本身,那么问题是标准C库中定义的目录是什么?答案是肯定的。特别是dirent.h接口到OS的目录概念是一个X.Open和POSIX.1标准。 –