vc遍历文件夹|C语言:如何遍历指定的文件夹(可以包括子文件夹)中的每一个文件名

vc遍历文件夹|C语言:如何遍历指定的文件夹(可以包括子文件夹)中的每一个文件名的第1张示图

『壹』 请问如何用c语言实现遍历查找磁盘下的exe文件 我是在VC6.0平台下

调用DOS 命令 dir 就可以了。如果只要显示文件名,加 选项 /B如果要显示所有子文件夹里的文件名, 加 选项 /S例如 DIR C:\*.exe /B /S如果要把显示 转向到文件 DIR C:\*.exe /B /S >> abc.lisDOS 命令 可以用 sprintf 做成,用 system() 让它执行。程序如下:#include <stdio.h>#include <stdlib.h>main(){char cmd[80];char d;for (d='C';d<='Z';d++) // 对 磁盘号 C: D: E: …..Z: 循环{ sprintf(cmd,"DIR %c:\\*.exe /B",d); // 命令// printf("%s\n",cmd); // 检查 命令字符串 是否正确system(cmd); // 执行}return 0;}

『贰』 关于VC++下遍历目录文件,请高手来啊,高分悬赏,问题解决加分悬赏150 急急急!!!!

INVALID_HANDLE_VALUE 就是被微软本定义为-1 的,但是直接写-1的话,编译器会提示类型不匹配,所以需要强制转换一下。HANDLE FindFirstFile( LPCTSTR lpFileName, // file name LPWIN32_FIND_DATA lpFindFileData // data buffer ); 该函数到一个文件夹(包括子文件夹)去搜索指定文件 如果要使用附加属性去搜索文件的话 可以使用FindFirstFileEx函数 HANDLE hFindFile搜索的文件句柄 函数执行的时候搜索的是此句柄的下一文件 LPWIN32_FIND_DATA lpFindFileData 指向一个用于保存文件信息的结构体 如果调用成功返回一个句柄,可用来做为FindNextFile 或 FindClose参数 调用失败 返回为INVALID_HANDLE_VALUE(即-1) ,可调用GetLastError来获取错误信息

『叁』 vc++怎样遍历文件夹新生成的文件

long _findfirst( char *filespec, struct _finddata_t *fileinfo ),然后你可以使用_findnext函数得到用_findfirst的句柄后的文件指针,如此就可以遍历所有满足条件的文件。其中_finddata_t 结构包括了文件的相关信息:文件名,创建日前等属性

『肆』 vc++中如何遍历文件夹里面的文件

代码见图

『伍』 VC6.0遍历查找文件

clude <windows.h> BOOL IsRoot(LPCTSTR lpszPath){ TCHAR szRoot[4]; wsprintf(szRoot, "%c:\\", lpszPath[0]); return (lstrcmp(szRoot, lpszPath) == 0);}void FindInAll(::LPCTSTR lpszPath){TCHAR szFind[MAX_PATH];lstrcpy(szFind, lpszPath); if (!IsRoot(szFind)) lstrcat(szFind, "\\"); lstrcat(szFind, "*.*"); // 找所有文件WIN32_FIND_DATA wfd;HANDLE hFind = FindFirstFile(szFind, &wfd);if (hFind == INVALID_HANDLE_VALUE) // 如果没有找到或查找失败 return; do { if (wfd.cFileName[0] == '.') continue; // 过滤这两个目录 if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { TCHAR szFile[MAX_PATH]; if (IsRoot(lpszPath)) wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName); else wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName); FindInAll(szFile); // 如果找到的是目录,则进入此目录进行递归 } else { TCHAR szFile[MAX_PATH]; if (IsRoot(lpszPath)) wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName); else wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName); printf("%s\n",szFile); // 对文件进行操作 } } while (FindNextFile(hFind, &wfd)); FindClose(hFind); // 关闭查找句柄}int main(int argc, char* argv[]){ FindInAll("e:\\result"); return 0;}//结合网上资料写出的,作者–杨克群^_^

『陆』 VC++程序如何遍历一个文件夹下面的所有子文件夹下的文件

find(char * lpPath){ char szFind[MAX_PATH]; WIN32_FIND_DATA FindFileData; strcpy(szFind,lpPath); strcat(szFind,"*.*"); HANDLE hFind=::FindFirstFile(szFind,&FindFileData); if(INVALID_HANDLE_VALUE == hFind) return; while(TRUE) { if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if(FindFileData.cFileName[0]!='.') { strcpy(szFile,lpPath); strcat(szFile,""); strcat(szFile,FindFileData.cFileName); find(szFile); } } else { cout << FindFileData.cFileName; } if(!FindNextFile(hFind,&FindFileData)) break; } FindClose(hFind);}#include <afxwin.h>#include <iostream>using namespace std;void Recurse(LPCTSTR pstr){ CFileFind finder; // build a string with wildcards CString strWildcard(pstr); strWildcard += _T("\\*.*"); // start working for files BOOL bWorking = finder.FindFile(strWildcard); while (bWorking) { bWorking = finder.FindNextFile(); // skip . and .. files; otherwise, we'd // recur infinitely!if (finder.IsDots()) continue; CString sFileName = finder.GetFileName(); cout << (LPCTSTR)sFileName << endl;//输出查找文件夹下的所有文件名 } finder.Close();}int main(){ if (!AfxWinInit(GetMoleHandle(NULL), NULL, GetCommandLine(), 0))//初始化MFC cout << "panic!" << endl; else Recurse(_T("C:")); return 0;}

『柒』 C语言:如何遍历指定的文件夹(可以包括子文件夹)中的每一个文件名

Function SearchFiles(Path As String, FileType As String)Dim Files() As String '文件路径Dim Folder() As String '文件夹路径Dim a, b, c As LongDim sPath As StringsPath = Dir(Path & FileType) '查找第一个文件Do While Len(sPath) '循环到没有文件为止 a = a + 1 ReDim Preserve Files(1 To a) Files(a) = Path & sPath '将文件目录和文件名组合,并存放到数组中 List1.AddItem Files(a) '加入控件中 sPath = Dir '查找下一个文件 DoEvents '让出控制权LoopsPath = Dir(Path & "\", vbDirectory) '查找第一个文件夹Do While Len(sPath) '循环到没有文件夹为止 If Left(sPath, 1) <> "." Then '为了防止重复查找 If GetAttr(Path & "\" & sPath) And vbDirectory Then '如果是文件夹则。。。。。。 b = b + 1 ReDim Preserve Folder(1 To b) Folder(b) = Path & sPath & "\" '将目录和文件夹名称组合形成新的目录,并存放到数组中 End If End If sPath = Dir '查找下一个文件夹 DoEvents '让出控制权LoopFor c = 1 To b '使用递归方法,遍历所有目录 SearchFiles Folder(c), FileTypeNextEnd FunctionPrivate Sub Command1_Click() '调用SearchFiles "e:\", "*.exe"End Sub

『捌』 我想用VC查找一个文件夹里的所有TXT文档中最新的一个 并读取它的内容 请问如何操作

给你一个思路先遍历这个文件夹下的txt文件,然后逐个创建比较时间,并保存最新的文件名到一个变量上面,然后用CFile::read读取内容。

给你一段伪代码自己修改试试

HANDLEhSearch;WIN32_FIND_DATAFileData,tempFileData;hSearch=FindFirstFile("E:\XX\*.txt",&FileData);//首先找到的是“.”if(hSearch==INVALID_HANDLE_VALUE)return0;if(!FindNextFile(hSearch,&FileData))return0;//然后找到的是“..”FindNextFile(hSearch,&tempFileData);//把第一个文件的信息保存在tempFileData上while(1){if(!FindNextFile(hSearch,&FileData))break;else{if(CompareFileTime(FileData.ftCreationTime,tempFileData.ftCreationTime)==-1){tempFileDataFileData}}}FindClose(hSearch);CFilefile;file.open("路径+\tempFileData.cFileName");charbuf[xx];file.read(buf……);file.close();

『玖』 C/C++编程遍历文件夹,统计当前文件个数,输出文件名

标准C是没有目录相关的函数的CFree是16位的吧,那就更不用想了.貌似只能内嵌汇编使用dos中断来完成.还是换编译器吧devcpp codeblock vc8 之类的都很好【cmail】:这个要用到windows APIHANDLE FindFirstFile( LPCTSTR lpFileName, LPWIN32_FIND_DATA lpFindFileData);BOOL FindNextFile( HANDLE hFindFile, LPWIN32_FIND_DATA lpFindFileData);WIN32_FIND_DATA【CHROX】:在Win32平台下不用windows api,有好多功能实现起来都很费劲,特别是系统相关的再说用api又不是什么丢人的事。开发可移植程序除外。用FindFirstFile和FindNextFile两个api很容易实现////////////////////////////////////////////////void FindFile(LPCTSTR lpszPath) { TCHAR szFind[MAX_PATH]; lstrcpy(szFind,lpszPath); if(!IsRoot(szFind)) lstrcat(szFind,"\\"); lstrcat(szFind,"*.*"); WIN32_FIND_DATA wfd; HANDLE hFind=FindFirstFile(szFind,&wfd); if(hFind==INVALID_HANDLE_VALUE) return; do{ if(lstrcmp(wfd.cFileName,".")==0||lstrcmp(wfd.cFileName,"..")==0) continue; char szFile[MAX_PATH]; lstrcpy(szFile,lpszPath); if(!IsRoot(szFile)) lstrcat(szFile,"\\"); lstrcat(szFile,wfd.cFileName); if((GetFileAttributes(szFile)&FILE_ATTRIBUTE_DIRECTORY)==FILE_ATTRIBUTE_DIRECTORY){ FindFile(szFile); //递归 }else { } //Do your things } } while (FindNextFile(hFind,&wfd)); CloseHandle(hFind); }【Geomatic】:原来FindFirstFile和FindNextFile是WINDOWS的API 我晕 我以为是C++的函数库里的东西呢我明白了 我找到的代码和CHROX的差不多#include <stdio.h>#include <windows.h>BOOL IsRoot(LPCTSTR lpszPath){TCHAR szRoot[4];wsprintf(szRoot, "%c:\\", lpszPath[0]);return (lstrcmp(szRoot, lpszPath) == 0);}void FindInAll(::LPCTSTR lpszPath){TCHAR szFind[MAX_PATH];<br>lstrcpy(szFind, lpszPath);<br>if (!IsRoot(szFind))<br>lstrcat(szFind, "\\");<br>lstrcat(szFind, "*.*"); // 找所有文件<br>WIN32_FIND_DATA wfd;<br>HANDLE hFind = FindFirstFile(szFind, &wfd);<br>if (hFind == INVALID_HANDLE_VALUE) // 如果没有找到或查找失败<br>return;<br><br>do<br>{<br>if (wfd.cFileName[0] == '.')<br>continue; // 过滤这两个目录<br>if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)<br>{<br>TCHAR szFile[MAX_PATH];<br>if (IsRoot(lpszPath))<br>wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);<br>else<br>wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);<br>FindInAll(szFile); // 如果找到的是目录,则进入此目录进行递归<br>}else{TCHAR szFile[MAX_PATH];if (IsRoot(lpszPath))wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);elsewsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);printf("%s\n",szFile);// 对文件进行操作}} while (FindNextFile(hFind, &wfd));FindClose(hFind); // 关闭查找句柄}int main(int argc, char* argv[]){FindInAll("g://music");return 0;}谢谢大家的帮助【Geomatic】:这个怎么给你们给分啊 那个分有用吗 刚申请的 好多功能不会用啊【cmail】:点上面的“管理”。【CHROX】:分可是个好东西。呵呵,你以后就明白了。【jixingzhong】:DEV C++, 利用链表实现目录内所有文件列表显示#include <stdio.h>#include <dirent.h>/*#include <alloc.h>*/#include <string.h>void main(int argc,char *argv[]){ DIR *directory_pointer; struct dirent *entry; struct FileList { char filename[64]; struct FileList *next; }start,*node; if (argc!=2) { printf("Must specify a directory\n"); exit(1); } if ((directory_pointer=opendir(argv[1]))==NULL) printf("Error opening %s\n",argv[1]); else { start.next=NULL; node=&start; while ((entry=readdir(directory_pointer))!=NULL) { node->next=(struct FileList *)malloc(sizeof(struct FileList)); node=node->next; strcpy(node->filename,entry->d_name); node->next=NULL; } closedir(directory_pointer); node=start.next; while(node) { printf("%s\n",node->filename); node=node->next; } }}【jixingzhong】:linux下面的,作者不是我A Demo written by camelrain /*the program find a file from current directory or your defined directorycommond optinon [path] filename*/#include <sys/types.h>#include <sys/stat.h>#include <dirent.h>#include <pwd.h>#include <unistd.h>#include <stdio.h>#include <string.h>#define LENGTH 256/* just if is a directory*/static int IsDir (char * name);/* search target file, arg1 is current path, arg2 is target file*/static void search_file (char * path, char * name);static int search_flag=0;/*just if is a directory*/static int IsDir (char * name) { struct stat buff; if (lstat(name,&buff)<0) return 0; //if not exist name ,ignore /*if is directory return 1 ,else return 0*/ return S_ISDIR(buff.st_mode);}/*search target file*/static void search_file (char * path, char * name) { DIR *directory; struct dirent * dir_entry; char buffer[LENGTH]; if ((directory=opendir(path)) == NULL) { fprintf(stderr, "%s", path); perror(" "); return; }while (dir_entry=readdir(directory)) { if (!strcmp(dir_entry->d_name,".")||!strcmp(dir_entry->d_name,"..")) { /* do nothing*/ } else { /* if is boot directory add "/" */ if ((strcmp(path,"/"))==0) sprintf(buffer,"%s%s",path,dir_entry->d_name); /* if is not boot directory do not add "/"*/ else sprintf(buffer,"%s/%s",path,dir_entry->d_name); //printf("Now file : %s\n",buffer); if (IsDir(buffer)) search_file (buffer , name); else { if (strcmp(dir_entry->d_name,name)==0) { printf("%s\n",buffer); search_flag=1; } } } } closedir(directory);}int main(int argc, char *argv[]){ static char * current_dir; static char * filename; int length; if (argc==1) { printf("A few parameters!!\n"); return 0; } if (argc==2) { current_dir=(char * )getcwd(current_dir,LENGTH); filename=argv[1]; } if (argc==3) { length=strlen(argv[1]); if (length>1 && (argv[1][length-1]=='/')) { argv[1][length-1]='\0'; //printf("%d\n",strlen(argv[1])); } current_dir=argv[1]; filename=argv[2]; } search_file(current_dir,filename); if (!search_flag) printf("Not found this(%s) file!\n",filename); return 0;}【jixingzhong】:VC 下的:long handle; struct _finddata_t filestruct; char path_search[_MAX_PATH]; handle = _findfirst("目录",&filestruct); if((handle == -1)) return; if( ::GetFileAttributes(filestruct.name)& FILE_ATTRIBUTE_DIRECTORY ) { if( filestruct.name[0] != '.' ) { _chdir(filestruct.name); Search_Directory(szFilename); _chdir(".."); } } else{ if( !stricmp(filestruct.name, szFilename) ) { strcat(path_search,"\\"); strcat(path_search,filestruct.name); MessageBox(path_search);} } while(!(_findnext(handle,&filestruct))) { if( ::GetFileAttributes(filestruct.name) &FILE_ATTRIBUTE_DIRECTORY ) { if(*filestruct.name != '.') { _chdir(filestruct.name); Search_Directory(szFilename); _chdir(".."); } else { if(!stricmp(filestruct.name,szFilename)) { _getcwd(path_search,_MAX_PATH); strcat(path_search,"\\"); strcat(path_search,filestruct.name); MessageBox(path_search); } } } _findclose(handle); }

『拾』 C语言如何遍历目录 (C++也可以) findfirst findnext怎么用

#include <windows.h>#include <stdio.h>FILE *fp;void findFile(char filePath[])//这个是你要的函数{ char szFind[MAX_PATH];//这是要找的 WIN32_FIND_DATA FindFileData; HANDLE hFind; char szFile[MAX_PATH]; strcpy(szFind,filePath); strcat(szFind,"\\*.*");//利用通配符找这个目录下的所以文件,包括目录 hFind=FindFirstFile(szFind,&FindFileData); if(INVALID_HANDLE_VALUE == hFind) return; while(TRUE) { if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)//这是目录 { if(FindFileData.cFileName[0]!='.')//.表示当前目录,因为每个目录下面都有两个默认目录就是..和.分别表示上一级目录和当前目录 { strcpy(szFile,filePath); strcat(szFile,"\\"); strcat(szFile,FindFileData.cFileName); findFile(szFile);//寻找这个目录下面的文件 } } else { fprintf(stdout,"%s\\%s\n",filePath,FindFileData.cFileName);//打印出目录下的文件的路径和名称 fprintf(fp,"%s\\%s\n",filePath,FindFileData.cFileName);//这将结果存档到c:\\path.txt中。 } if(!FindNextFile(hFind,&FindFileData))//寻找下一个文件 break; } FindClose(hFind);//关闭句柄}int main(){ fp = fopen("C:\\path.txt","w"); findFile("D:\\e-book\\实习\\随笔\\读书ing");//这里是你要遍历的目录,你自己可以改变,它会显示这个目录下的所有文件,包括这个目录下子目录下的文件。 fclose(fp); return 0;}程序如上,是把结果输出到标准输出上,并且存档到C:\\path.txt中。可以运行的,我已经测试过。工具是vc6.0.

未经允许不得转载:山九号 » vc遍历文件夹|C语言:如何遍历指定的文件夹(可以包括子文件夹)中的每一个文件名

赞 (0)