如何获取文件信息?

1 c++ mfc visual-c++

我的计算机上有一个现有文件,我想知道是否有可能知道文件的创建时间,文件大小以及文件上的更多属性。.
我尝试在ifstream中使用,但是文件上有一些信息
(我使用的是Visual C ++ 6.0,不能使用Boost)

Luk*_*sen 5

看功能GetFileAttributesEx

#include <windows.h>

WIN32_FILE_ATTRIBUTE_DATA fInfo;

GetFileAttributesEx("test.dat", GetFileExInfoStandard, &fInfo);
Run Code Online (Sandbox Code Playgroud)

其中WIN32_FILE_ATTRIBUTE_DATA包含许多“常用”文件信息(大小,创建/编辑时间,属性)。

更新:我刚刚看到,您正在使用Visual C ++6。由于GetFileAttributesExWindows XP对此版本提供了支持,因此它可能在您的WIN API标头中不可用...您可以通过动态链接使用该功能。以下代码与上面的代码段具有相同的作用:

/* clone definition of WIN32_FILE_ATTRIBUTE_DATA from WINAPI header */
typedef struct file_info_struct
{
    DWORD    dwFileAttributes;
    FILETIME ftCreationTime;
    FILETIME ftLastAccessTime;
    FILETIME ftLastWriteTime;
    DWORD    nFileSizeHigh;
    DWORD    nFileSizeLow;
} FILE_INFO;

/* function pointer to GetFileAttributesEx */
typedef BOOL (WINAPI *GET_FILE_ATTRIBUTES_EX)(LPCWSTR lpFileName, int fInfoLevelId, LPVOID lpFileInformation);


HMODULE hLib;
GET_FILE_ATTRIBUTES_EX func;
FILE_INFO fInfo;

hLib = LoadLibrary("Kernel32.dll");
if (hLib != NULL)
{
    func = (GET_FILE_ATTRIBUTES_EX)GetProcAddress(hLib, "GetFileAttributesExW");
    if (func != NULL)
    {
        func("test.dat", 0, &fInfo);
    }

    FreeLibrary(hLib);

    /*
    ** Don't call func after FreeLibrary !!!
    ** It should be ok since kernel32.dll is loaded by your application anyway but if
    ** you get a function pointer from a dll only loaded by LoadLibrary the function
    ** pointer is invalid once the library if freed.
    */
}
Run Code Online (Sandbox Code Playgroud)