c++扫描目录下的文件保存信息到txt

来源:互联网 发布:极光推送文档java 编辑:程序博客网 时间:2024/05/16 01:00
//#include "stdafx.h" #include <stdio.h>#include <windows.h> #define FILEILTER "*.*"FILE *fp;BOOL IsRoot(LPCTSTR lpszPath) {     TCHAR szRoot[4];     wsprintf(szRoot, "%c:\\", lpszPath[0]);     return (lstrcmp(szRoot, lpszPath) == 0); } void PrintFileDetail(WIN32_FIND_DATA *wfd){    SYSTEMTIME sysTime;        fprintf(fp,"文件名:%s\n",wfd->cFileName);    FileTimeToSystemTime(&(wfd->ftCreationTime),&sysTime);    fprintf(fp,"文件的创建时间      :%d年 %d月 %d日 星期%d, %d时 %d分 %d秒\n", sysTime.wYear,sysTime.wMonth,sysTime.wDay,sysTime.wDayOfWeek,sysTime.wHour+8,sysTime.wMinute,sysTime.wSecond);    FileTimeToSystemTime(&(wfd->ftLastAccessTime),&sysTime);    fprintf(fp,"文件的最后访问时间  :%d年 %d月 %d日 星期%d, %d时 %d分 %d秒\n", sysTime.wYear,sysTime.wMonth,sysTime.wDay,sysTime.wDayOfWeek,sysTime.wHour+8,sysTime.wMinute,sysTime.wSecond);    FileTimeToSystemTime(&(wfd->ftLastWriteTime),&sysTime);    fprintf(fp,"文件的最后修改时间  :%d年 %d月 %d日 星期%d, %d时 %d分 %d秒\n", sysTime.wYear,sysTime.wMonth,sysTime.wDay,sysTime.wDayOfWeek,sysTime.wHour+8,sysTime.wMinute,sysTime.wSecond);    fprintf(fp,"文件属性:");     if(wfd->dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE)    fprintf(fp,"归档 ");     if(wfd->dwFileAttributes & FILE_ATTRIBUTE_COMPRESSED)    fprintf(fp,"压缩文件 ");     if(wfd->dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)    fprintf(fp,"隐藏 ");     if(wfd->dwFileAttributes & FILE_ATTRIBUTE_READONLY)    fprintf(fp,"只读 ");    if(wfd->dwFileAttributes & FILE_ATTRIBUTE_SYSTEM)    fprintf(fp,"系统文件 ");    if(wfd->dwFileAttributes & FILE_ATTRIBUTE_TEMPORARY)    fprintf(fp,"临时文件 ");    if(wfd->dwFileAttributes & FILE_ATTRIBUTE_NORMAL)    fprintf(fp,"默认 ");    fprintf(fp,"\n");;    fprintf(fp,"文件大小:%d字节\n",wfd->nFileSizeLow);}                     void FindInAll(LPCTSTR lpszPath) {    TCHAR szFind[MAX_PATH];     lstrcpy(szFind, lpszPath);     if (!IsRoot(szFind))         lstrcat(szFind, "\\");     lstrcat(szFind, FILEILTER); // 找所有文件     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);                PrintFileDetail(&wfd);             }            // 对文件进行操作         }     } while (FindNextFile(hFind, &wfd));     FindClose(hFind); // 关闭查找句柄     } int main(int argc, char* argv[]) {     char findFile[64]={0},saveFile[64]={0};        puts("输入文件路径: (如 d:\\\\test)");    gets(findFile);    puts("输入要保存结果的文件:(如 d:\\\\test.txt)");    gets(saveFile);    fp=fopen(saveFile,"a+");    fprintf(fp,"目录%s 下的文件为:\n\n",findFile);     FindInAll(findFile);    printf("文件保存至%s.\n",saveFile);     fclose(fp);    getchar();    return 0; } 
主要是
 FileTimeToSystemTime(&(wfd->ftCreationTime),&sysTime)的用法以及如何printf
原创粉丝点击