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

//#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

你可能感兴趣的:(C++,列出目录文件)