目錄
一、訪問目錄相關(guān)函數(shù)
1、打開/訪問目錄 (opendir / fdopendir)
2、讀取目錄內(nèi)容 (readdir)
3、關(guān)閉目錄 (closedir)
二、遍歷指定目錄下的所有文件
一、訪問目錄相關(guān)函數(shù)
1、打開/訪問目錄 (opendir / fdopendir)
opendir / fdopendir 函數(shù)的作用是訪問指定路徑的目錄,函數(shù)聲明如下:
(1) opendir
opendir 函數(shù)是通過用戶提供的目錄路徑來訪問目錄,參數(shù)是目錄路徑,返回值是目錄指針 DIR*,是一個(gè)目錄結(jié)構(gòu)體,存放了目錄的相關(guān)信息,類似于之前文件操作里的 FILE*,用戶可以通過這個(gè)目錄指針來訪問目錄。
(2)?fdopendir
和 opendir 函數(shù)的作用一樣,不一樣的地方在于,fdopendir 函數(shù)的參數(shù)是文件描述符(需搭配open函數(shù)來使用),Linux下一切皆文件,目錄也可以看作是一個(gè)文件,也可以使用open函數(shù)來獲取其對應(yīng)的文件描述符。
2、讀取目錄內(nèi)容 (readdir)
readdir 函數(shù)的作用是讀取目錄流中的內(nèi)容。函數(shù)聲明如下:
參數(shù):opendir / fdopendir 返回的目錄指針
返回值:失敗返回NULL,成功返回一個(gè)包含目錄信息的結(jié)構(gòu)體,關(guān)于該結(jié)構(gòu)體的定義如下,需要重點(diǎn)關(guān)注的是 最后一個(gè)結(jié)構(gòu)體成員 d_name
注意:和文件指針一樣,每調(diào)用一次 readdir, 目錄指針 DIR 就會(huì)指向當(dāng)前目錄中的下一個(gè)目錄或者普通文件,當(dāng)?shù)竭_(dá)目錄尾會(huì)返回NULL。
3、關(guān)閉目錄 (closedir)
closedir 的作用是關(guān)閉一個(gè)打開的目錄,參數(shù)就是打開目錄文件時(shí)返回的目錄指針。成功返回 0,失敗返回 -1。
二、遍歷指定目錄下的所有文件
遍歷目錄的步驟主要有兩步:文章來源:http://www.zghlxwxcb.cn/news/detail-442362.html
- 使用 opendir 獲取到目錄指針
- 通過目錄指針同時(shí)搭配readdir函數(shù),只要返回結(jié)果不為NULL,那就繼續(xù)遍歷,直到遍歷目錄下的每一個(gè)文件 。
#include <sys/types.h>
#include <dirent.h>
#include <cstring>
int main(int argc, char** argv)
{
DIR* dir = opendir("/home/linux/Templates"); // 打開一個(gè)目錄
if (dir == NULL)
{
perror("opendir");
return -1;
}
struct dirent* dnt;
while((dnt = readdir(dir))!=NULL) // 只要返回結(jié)果不為NULL,就一直遍歷
{
// 濾除 . 和 ..
if (!strcmp(".", dnt->d_name) || !strcmp("..", dnt->d_name))
{
continue;
}
printf("%s\n",dnt->d_name);
}
closedir(dir);
return 0;
}
文章來源地址http://www.zghlxwxcb.cn/news/detail-442362.html
到了這里,關(guān)于【文件IO】Linux 文件操作(一) —— 遍歷指定目錄下的所有文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!