c文件夾所有文件
A. c語言如何實現遍歷文件夾下的所有txt文件並在文件中搜索字元串
用 FINDFile和FindNextFile可以遍歷整個文件夾,然後取出文件名判斷是否txt,再打開文件讀取內容進行查找。
B. 如何用C語言清空特定文件夾中的所有文件
代碼如下,僅供參考。 #include "iostream.h" //由於該博客系統發布是不能顯示正常,代碼如需調試,只需將改成""即可 #include "string.h" #include "stdlib.h" #include "time.h" #include "math.h" #include "windows.h" #include "stdio.h" #include "shellapi.h" #include "fstream.h" #include "string" using namespace std; void main(){//清空特定文件夾中的所有文件 char* a="."; char* b="";
C. c語言怎麼刪除一個文件夾里的所有文件
比如說你要刪除所有C盤中的文件:
system("del *.*");
del是DOS下的刪除命令, *.*這個我不用解釋了吧?
D. 怎麼知道一個文件夾里所有文件的名字 C
打開它.按類型排列.可以看到它的類型一樣的文件.按名字.是從A到Z的順序.
E. 怎麼用c語言實現遍歷某目錄或文件夾里的所有文件(所有類型
實現遍歷目錄或文件夾里的所有文件在C語言中並非標准庫直接支持的操作。然而,對於不同的操作系統,可以採用不同的方法來實現這一功能。對於Windows系統,可以使用FindFirstFile、FindNextFile和FindClose這三個API來實現遍歷動作。具體用法請參考MSDN文檔。
以下是使用Visual Studio 2019編譯的示例代碼,採用了多位元組編碼(非unicode):
在Linux系統中,可以使用opendir、readdir和closedir這三個API來實現類似功能,具體的API行為請查閱相關文檔。以下是一個在Fedora 33環境下使用gcc編譯的參考代碼,其邏輯與Windows版本類似。
對於Mac系統,由於沒有親身體驗,暫無法提供具體實現細節。不過,基於Linux版本的代碼,相信在Mac環境中應能順利運行。
F. C語言:如何得到指定地址的文件夾中所有文件的文件名和其修改時間 包括子文件內的
俺前段時間寫了段功能相似的程序,但用的是用C++/STL寫的,訪問目錄使用了win32api(能訪問指定目錄的子目錄)。
獲取文件名與修改時間由FileOfDirectory::detectFiles實現(其實你只需要看這一個函數即可)。
這段程序以STL數組保存單個文件名,查詢過程中沒有回溯,wcsstr函數內部也是KMP,所以事實上這個程序也是按KMP查詢的
安時間排序時使用STL演算法庫,時間復雜度同快速排序。
最後,這段代碼是在VS2010編譯的。
#include<vector>
#include<algorithm>
structFileNameAndTime
{
wchar_tszPath[MAX_PATH];//filedirectory
wchar_tszName[MAX_PATH];//filename
FILETIMElastAcc;//lastaccesstime
FileNameAndTime()
{
memset(&lastAcc,0,sizeof(lastAcc));
memset(szName,0,sizeof(wchar_t)*MAX_PATH);
memset(szPath,0,sizeof(wchar_t)*MAX_PATH);
}
FileNameAndTime(constPWCHARfn,constPWCHARpa,constLPFILETIMEft)
{
if((0==fn)||(0==pa)||(0==ft))
return;
memcpy(&lastAcc,ft,sizeof(lastAcc));
wcscpy(szName,fn);
wcscpy(szPath,pa);
}
FileNameAndTime(constFileNameAndTime&fnd)
{
memcpy(&this->lastAcc,&fnd.lastAcc,sizeof(this->lastAcc));
wcscpy(this->szName,fnd.szName);
wcscpy(this->szPath,fnd.szPath);
}
constFileNameAndTime&operator=(constFileNameAndTime&fnd)
{
if(this!=&fnd){
memcpy(&this->lastAcc,&fnd.lastAcc,sizeof(this->lastAcc));
wcscpy(this->szName,fnd.szName);
wcscpy(this->szPath,fnd.szPath);
}
return*this;
}
voidGetFullPath(wchar_t(&fp)[MAX_PATH])const
{
wcscpy(fp,szPath);
wcscat(fp,szName);
}
friendbooloperator>(constFileNameAndTime&l,constFileNameAndTime&r);//comparethisobjectbyaccesstime
};
booloperator<(constFileNameAndTime&l,constFileNameAndTime&r)//forsort
{
if(l.lastAcc.dwHighDateTime<r.lastAcc.dwHighDateTime)
returntrue;
elseif(l.lastAcc.dwHighDateTime==r.lastAcc.dwHighDateTime)
{
if(l.lastAcc.dwLowDateTime<r.lastAcc.dwLowDateTime)
returntrue;
}
returnfalse;
}
classFileOfDirectory
{
private:
staticconstwchar_tszDot[];
staticconstwchar_tszDotDot[];
staticconstwchar_tcStar;
staticconstwchar_tcSlash;
private:
std::vector<FileNameAndTime>vecFT;
wchar_tszCurrentPath[MAX_PATH];
private:
voidvalidatePath(constwchar_t*pPath)
{
wcscpy(szCurrentPath,pPath);
intlen=wcslen(szCurrentPath);
if((cStar!=szCurrentPath[len-1])
&&(cSlash!=szCurrentPath[len-2]))
{
szCurrentPath[len]=cSlash;
szCurrentPath[len+1]=cStar;
szCurrentPath[len+2]=0;
return;
}
if((cStar!=szCurrentPath[len-1])
&&(cSlash==szCurrentPath[len-2]))
{
szCurrentPath[len]=cStar;
szCurrentPath[len+1]=0;
return;
}
}
voiddetectFiles(constLPWSTRszDir)
{
WIN32_FIND_DATAffd;
HANDLEhFind=::FindFirstFile(szDir,&ffd);
if(INVALID_HANDLE_VALUE==hFind)
return;
do
{
if(ffd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
{
if((0==wcscmp(ffd.cFileName,szDot))||(0==wcscmp(ffd.cFileName,szDotDot)))
continue;
else
{
wchar_tszTempPath[MAX_PATH];
wcscpy(szTempPath,szDir);
szTempPath[wcslen(szTempPath)-1]=0;
wcscat(szTempPath,ffd.cFileName);
intlen=wcslen(szTempPath);
szTempPath[len]=cSlash;
szTempPath[len+1]=cStar;
szTempPath[len+2]=0;
detectFiles(szTempPath);
}
}
else{
wchar_tpath[MAX_PATH];
wcscpy(path,szDir);
path[wcslen(path)-1]=0;
vecFT.push_back(FileNameAndTime(ffd.cFileName,path,&ffd.ftLastAccessTime));
}
}
while(::FindNextFile(hFind,&ffd)!=0);
}
public:
FileOfDirectory(constLPWSTRszDir)
{
validatePath(szDir);
detectFiles(szCurrentPath);
}
voidSortByAccessTime()
{
sort(vecFT.begin(),vecFT.end());
}
intNumOfFiles()const{returnvecFT.size();}
intFindFilesByKeyWord(wchar_t*pszFn,int*outCome,intoutComeLen,boolbMatchAll=false)
{
wchar_tszTemp[MAX_PATH],szFnLwr[MAX_PATH];
intindex=0;
wcscpy(szFnLwr,pszFn);
_wcslwr(szFnLwr);
for(inti=0;i<vecFT.size();++i)
{
wcscpy(szTemp,vecFT[i].szName);
_wcslwr(szTemp);
if(true==bMatchAll)
{
if(0==wcscmp(szTemp,szFnLwr))
{
if(index>=outComeLen)
returnindex;
outCome[index++]=i;
}
}
else
{
if(0!=wcsstr(szTemp,szFnLwr))
{
if(index>=outComeLen)
returnindex;
outCome[index++]=i;
}
}
}
}
FileNameAndTimeGetItemByID(intindex)
{
if((index>=0)&&(index<vecFT.size()))
returnFileNameAndTime(vecFT[index]);
}
};
constwchar_tFileOfDirectory::szDot[]=L".";
constwchar_tFileOfDirectory::szDotDot[]=L"..";
constwchar_tFileOfDirectory::cStar=L'*';
constwchar_tFileOfDirectory::cSlash=L'\';
void__stdcallentp3()//測試程序
{
FileOfDirectoryfod(L"E:\game");
intids[256]={0};
fod.SortByAccessTime();
intlen=fod.FindFilesByKeyWord(L"main",ids,256);
for(inti=0;i<len;++i){
FileNameAndTimefnt(fod.GetItemByID(ids[i]));
CDbgString::OutputDbgStringW(L" %s%s",fnt.szPath,fnt.szName);
}
}
測試結果如圖所示。
G. C語言怎麼讀取某一文件夾下的所有文件夾和文件
讀取的代碼方式如下:
intmain()
{
longfile;
struct_finddata_tfind;
_chdir("d:\");
if((file=_findfirst("*.*",&find))==-1L)
{
printf("空白! ");
exit(0);
}
printf("%s ",find.name);
while(_findnext(file,&find)==0)
{
printf("%s ",find.name);
}
_findclose(file);
return0;
}