-6

我们在 C 或 C++ 中使用什么方法(或库函数)来读取目录中的文件索引(即所有文件的列表)。

我的动机是创建一个函数,通过读取目录中的文件列表,在目录(或文件系统)中进行扩展搜索。由于我们还不知道磁盘上存在哪些文件,我们无法打开和读取它们。

但是,我知道 Unix/Linux 中的 'ls' 和 'dir' 之类的程序能够读取目录的内容。由于这些操作系统也大多是用 C 语言编写的,因此必须有某种方法可以在一个程序下创建类似的功能。

以下是我要使用的算法:

  1. 从用户那里获取输入以导航到文件系统上的目录
  2. 读取文件内容
  3. 制作一个链表并将我们刚刚读取的目录的内容添加到其中
  4. 使用链表读取文件名并使用现有算法逐一搜索文件内容
  5. 将输出写入屏幕,解释找到的结果(结果按现有算法确定的顺序或优先级编制索引)。

我已经编写了第 4 步和第 5 步中使用的算法,并且可以自己完成第 1 步和第 3 步。我遇到的唯一问题是第 2 步。C/C++ 中是否有任何库或任何其他方法可以解决这个问题?

谢谢!

4

3 回答 3

2

更新#1:适应已编辑的问题

知道您可以opendir()用来打开目录的目录的路径。然后你通过readdir(). 您检索您想要的内容,然后使用 . 关闭目录closedir()。请注意,这些是UNIX 的系统调用。所以你的代码不会是可移植的。无论如何,在此头文件 ( dirent.h) 中,您都可以找到处理目录所需的所有函数。

原答案:

可能有用的是使用exec()系统调用。您通常会调用为您完成工作的下划线系统调用并在您的程序中收集结果。在这种情况下,您使用的是 Linux(根据标签),因此您可以使用ls, find,grep可以列出您的文件的程序。可以在此处找到示例。

于 2013-07-09T12:55:18.343 回答
0

浏览论坛时,我发现这个问题与我的相似。

如何使用 C 或 C++ 获取目录中的文件列表?

我认为这回答了我的问题。

于 2013-07-11T13:27:35.327 回答
0

在 Linux(和一些 Posix 系统)上,您可能需要使用 C 中的nftw(3)库函数。

当然,还有find(1)实用命令,可在 shell 中使用。

也许您还需要readdir(3)函数和stat(2)系统调用。

正如一些人评论的那样,许多库可以帮助您,例如在 C++ 中:boostPoco库、QtCore,以及在 C 中:glib(来自 Gtk)等。

于 2013-07-09T12:54:54.323 回答