1 c++ mfc visual-c++
我的计算机上有一个现有文件,我想知道是否有可能知道文件的创建时间,文件大小以及文件上的更多属性。.
我尝试在ifstream中使用,但是文件上有一些信息
(我使用的是Visual C ++ 6.0,不能使用Boost)
#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)
| 归档时间: |
|
| 查看次数: |
6006 次 |
| 最近记录: |