我需要目录中所有文件的创建日期,它适用于所有文件,但不适用于文件夹。

int antiguedad(char * nombre){

ZeroMemory(&fileinfo, sizeof(BY_HANDLE_FILE_INFORMATION));
// obtain a handle to the file, in this case the file
// must be in the same directory as your application
HANDLE myfile = NULL;
//char * nombre = "nuevooo.txt";
myfile = CreateFileA(nombre,0x00,0x00,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

// if we managed to obtain the desired handle
if(myfile!=INVALID_HANDLE_VALUE)
{
    //try to fill the structure with info regarding the file
    if(GetFileInformationByHandle(myfile, &fileinfo))
    {
       SYSTEMTIME systemTime;
       FileTimeToSystemTime(&fileinfo.ftCreationTime, &systemTime);
       printf("El archivo tiene %i dias \n", diferenciaEndias(systemTime.wDay,systemTime.wMonth, systemTime.wYear));
    }
    CloseHandle(myfile);
}
else {

    printf("IT A FOLDER \n");
}
return 0;

}


我认为文件夹需要特定的代码,但是我什么也没找到

最佳答案

避免使用FILE_ATTRIBUTE_NORMAL(实际上意味着没有其他所有属性,包括只读/归档/系统/隐藏等,因此它可能与您的期望不符-尽管可以根据CreateFile的意图将其忽略)。

要获得文件夹的有效句柄,请包含FILE_FLAG_BACKUP_SEMANTICS。

08-24 12:22