欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
C++下遍歷文件夾

C++下遍歷文件夾

編寫(xiě)程序遍歷文件夾及其子文件夾下所有文件,并輸出到標準輸出流或者文件流。

1. 先考慮在單層目錄下,遍歷所有文件。以C:\WINDOWS為例:

用到數據結構_finddata_t,文件信息結構體的指針。

struct _finddata_t
{
unsigned attrib; //文件屬性
time_t time_create; //文件創(chuàng )建時(shí)間
time_t time_access; //文件上一次訪(fǎng)問(wèn)時(shí)間
time_t time_write; //文件上一次修改時(shí)間
_fsize_t size; //文件字節數
char name[_MAX_FNAME]; //文件名
};

文件屬性是無(wú)符號整數,取值為相應的宏:_A_ARCH(存檔),_A_SUBDIR(文件夾),_A_HIDDEN(隱藏),_A_SYSTEM(系統),_A_NORMAL(正常),_A_RDONLY(只讀)。容易看出,通過(guò)這個(gè)結構體,我們可以得到關(guān)于該文件的很多信息。結合以下函數,我們可以將文件信息存儲到這個(gè)結構體中:

//按FileName命名規則匹配當前目錄第一個(gè)文件
_findfirst(_In_ const char * FileName, _Out_ struct _finddata64i32_t * _FindData);
//按FileName命名規則匹配當前目錄下一個(gè)文件
_findnext(_In_ intptr_t _FindHandle, _Out_ struct _finddata64i32_t * _FindData);
//關(guān)閉_findfirst返回的文件句柄
_findclose(_In_ intptr_t _FindHandle);

_findfirst 函數返回的是匹配到文件的句柄,數據類(lèi)型為long。遍歷過(guò)程可以指定文件類(lèi)型,這通過(guò)FileName的賦值來(lái)實(shí)現,例如要遍歷C:\WINDOWS下的所有.exe文件

View Code
bool transfer(string fileName = "C:\\Windows\\*.exe", int exeNum = 0)
{
_finddata_t fileInfo;
long handle = _findfirst(fileName.c_str(), &fileInfo);

if (handle == -1L)
{
cerr << "failed to transfer files" << endl;
return false;
}

do
{
exeNum ++;
cout << fileInfo.name <<endl;
} while (_findnext(handle, &fileInfo) == 0);
cout << " .exe files' number: " << exeNum << endl;

return true;
}

 2. 遍歷文件夾及其子文件夾下所有文件。操作系統中文件夾目錄是樹(shù)狀結構,使用深度搜索策略遍歷所有文件。用到_A_SUBDIR屬性,可運行程序如下:

View Code
void dfsFolder(string folderPath, ofstream &fout)
{
_finddata_t FileInfo;
string strfind = folderPath + "\\*";
long Handle = _findfirst(strfind.c_str(), &FileInfo);

if (Handle == -1L)
{
cerr << "can not match the folder path" << endl;
exit(-1);
}
do{
//判斷是否有子目錄
if (FileInfo.attrib & _A_SUBDIR)
{
//這個(gè)語(yǔ)句很重要
if( (strcmp(FileInfo.name,".") != 0 ) &&(strcmp(FileInfo.name,"..") != 0))
{
string newPath = folderPath + "\\" + FileInfo.name;
dfsFolder(newPath, fout);
}
}
else
{
fout << folderPath << "\\" << FileInfo.name << " ";
}
}while (_findnext(Handle, &FileInfo) == 0);

_findclose(Handle);
fout.close();
}

 在判斷有無(wú)子目錄的if分支中,由于系統在進(jìn)入一個(gè)子目錄時(shí),匹配到的頭兩個(gè)文件(夾)是"."(當前目錄),".."(上一層目錄)。需要忽略掉這兩種情況。當需要對遍歷到的文件做處理時(shí),在else分支中添加相應的代碼就好

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
io.h下的_findfirst()和_finenext()
文件屬性
數碼相框實(shí)現遍歷文件夾圖片文件
遞歸遍歷某一路徑下的所有文件(for windows or linux)
兩個(gè)delphi下遍歷指定目錄下指定類(lèi)型文件的函數
VC文件目錄常見(jiàn)操作
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久