需要列出 AIX 上某个目录中的所有文件
Need to list all files in a directory on AIX
有一个程序需要列出 AIX 上目录中的所有文件。
已在 Windows 上成功完成:-
hFind = FindFirstFile(szDir, &ffd);
if (hFind == INVALID_HANDLE_VALUE)
{
fprintf(stderr,"Can not scan for files.\n");
goto MOD_EXIT;
}
do
{
if (! (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
printf("File:%s\n",ffd.cFileName);
}
}
while (FindNextFile(hFind, &ffd) != 0);
以及 Linux:-
d = opendir(szDir);
if (!d)
{
fprintf(stderr,"Can not open directory '%s'.\n",szDir);
goto MOD_EXIT;
}
while(dir = readdir(d))
{
if (dir->d_type != DT_DIR)
{
printf("File:%s\n",dir->d_name);
}
}
closedir(d);
readdir
似乎存在于 AIX 上,但从手册来看它似乎只有 returns 目录而不是文件。 d_type
字段在 dirent
结构中不存在。
当readdir()
指的是目录条目时,它表示目录中的条目,而不是目录的子目录。所以你可以从那里得到所有的名字。
要确定它们是文件还是目录,可移植/可靠的方法是 stat()
结果。有标准宏来测试统计缓冲区中返回的 st_mode
(例如 S_ISDIR
)
有一个程序需要列出 AIX 上目录中的所有文件。
已在 Windows 上成功完成:-
hFind = FindFirstFile(szDir, &ffd);
if (hFind == INVALID_HANDLE_VALUE)
{
fprintf(stderr,"Can not scan for files.\n");
goto MOD_EXIT;
}
do
{
if (! (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
printf("File:%s\n",ffd.cFileName);
}
}
while (FindNextFile(hFind, &ffd) != 0);
以及 Linux:-
d = opendir(szDir);
if (!d)
{
fprintf(stderr,"Can not open directory '%s'.\n",szDir);
goto MOD_EXIT;
}
while(dir = readdir(d))
{
if (dir->d_type != DT_DIR)
{
printf("File:%s\n",dir->d_name);
}
}
closedir(d);
readdir
似乎存在于 AIX 上,但从手册来看它似乎只有 returns 目录而不是文件。 d_type
字段在 dirent
结构中不存在。
当readdir()
指的是目录条目时,它表示目录中的条目,而不是目录的子目录。所以你可以从那里得到所有的名字。
要确定它们是文件还是目录,可移植/可靠的方法是 stat()
结果。有标准宏来测试统计缓冲区中返回的 st_mode
(例如 S_ISDIR
)