#include <windows.h> #include <malloc.h> #include <stdio.h> #include <string.h> #define FILE_NAME "c://test.dat" //文件的打开关闭 // int main() // { // // FILE* pf = fopen(FILE_NAME,"r"); // if (pf) // { // printf("打开文件成功/n"); // fclose(pf); // } // else // { // printf("打开文件失败/n"); // } // // return 0; // } //文件的读取fgetc // int main() // { // FILE *fp; // char ch; // if((fp=fopen(FILE_NAME,"rt"))==NULL) // { // printf("Cannot open file strike any key exit!"); // return 0; // } // ch=fgetc(fp); // while (feof(fp)==0) // { // putchar(ch); // ch=fgetc(fp); // } // printf("/n"); // fclose(fp); // // return 0; // } //文件的写入fputc // int main() // { // FILE* pf; // char ch; // if ((pf=fopen(FILE_NAME,"wt+"))==NULL) // { // printf("打开或创建文件失败/n"); // return 0; // } // printf("请输入您的相关信息:/n"); // while ((ch=getchar())!='/') // { // fputc(ch,pf); // } // // fflush(pf); // fclose(pf); // // return 0; // } //文件读取fgets[每次读取一行] // int main() // { // FILE * pf; // char buffer[128]; // if ((pf=fopen(FILE_NAME,"rt"))==NULL) // { // printf("打开文件失败/n"); // return 0; // } // while((fgets(buffer,128,pf))!=NULL) // { // puts(buffer); // } // fclose(pf); // return 0; // } //文件写入fputs[每次写入一行] // int main() // { // FILE *pf; // char buffer[128]; // if ((pf=fopen(FILE_NAME,"wt+"))==NULL) // { // printf("打开文件失败/n"); // return 0; // } // while(gets(buffer) && buffer[0]!='/') // { // strcat(buffer,"/n"); // fputs(buffer,pf); // // } // fclose(pf); // return 0; // } //文件读取和写入fwrite|fread[结构化] // int main() // { // FILE* pf; // struct Pet{ // char name[32]; // int age; // int health; // int love; // } cat,dog; // // if ((pf = fopen(FILE_NAME,"w+b"))==NULL) // { // printf("创建文件失败/n"); // return 0; // } // // strcpy(cat.name,"tiger"); // cat.age = 2; // cat.health = 100; // cat.love = 2; // // strcpy(dog.name,"OUOU"); // dog.age =3; // dog.health = 99; // dog.love = 1; // // fwrite(&cat,sizeof(cat),1,pf); // fwrite(&dog,sizeof(dog),1,pf); // // fflush(pf); // rewind(pf); // //准备从文件中还原结构 // Pet pCat; // Pet pDog; // fread(&pCat,sizeof(pCat),1,pf); // fread(&pDog,sizeof(pDog),1,pf); // // printf("%s/t%d/t%d/t%d/n",pCat.name,pCat.age,pCat.health,pCat.love); // printf("%s/t%d/t%d/t%d/n",pDog.name,pDog.age,pDog.health,pDog.love); // // fclose(pf); // return 0; // } //目录遍历[一级] // int main() // { // WIN32_FIND_DATA fileData; // // HANDLE fhandle = INVALID_HANDLE_VALUE; // fhandle = ::FindFirstFile("D://*.*",&fileData); // do // { // if (fhandle == INVALID_HANDLE_VALUE) // break; // printf("%s/t/t%s/n",fileData.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY?"目录":"文件",fileData.cFileName); // // } while (::FindNextFile(fhandle,&fileData)); // // FindClose(fhandle); // return 0; // } //递归遍历一个目录下的所有文件和子目录 void iterateDir(const char * const dirName); int main() { iterateDir("E://Data//RIA//Flex"); return 0; } void iterateDir(const char * const dirName) { WIN32_FIND_DATA fileData; char * pDir = (char*)malloc(strlen(dirName)+5); if (!pDir) return; strcpy(pDir,dirName); strcat(pDir,"//*.*"); HANDLE fhandle = FindFirstFile(pDir,&fileData); if (fhandle==INVALID_HANDLE_VALUE) return; do { if (fileData.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY && (strcmp(fileData.cFileName,".")==0 || strcmp(fileData.cFileName,"..")==0)) { continue; } printf("%s/t/t%s/n",fileData.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY?"目录":"文件",fileData.cFileName); if (fileData.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY) { LPVOID pnewDirAddress = alloca(strlen(dirName)+strlen(fileData.cFileName)+4); char * pnewDir = (char*)pnewDirAddress; strcpy(pnewDir,dirName); strcat(pnewDir,"//"); strcat(pnewDir,fileData.cFileName); iterateDir(pnewDir); } } while (::FindNextFile(fhandle,&fileData)); free(pDir); }