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