FindFirstFile在引用的目录中返回的点/双点文件记录的元数据是什么对象?
在实践中,它们似乎表现为软链接和硬链接的奇怪混合。在我的系统上,文件属性(例如只读/隐藏/存档标志)确实反映了它们指向的目标的状态,但创建/写入/访问访问字段似乎总是等于被搜索目录的创建时间。
我问,因为我正在制作的构建工具决定缓存搜索结果,首先将文件名转换为绝对文件名并归档元数据,当后续目录的创建时间不匹配时导致破坏的构建。
我可以依赖于“。”的ftCreationTime。等于文件夹本身的创建时间?这对于避免不必要的查询很有用。
这里的记录是一个快速而又肮脏的复制品:
#include <stdio.h>
#include <windows.h>
static void print(const WIN32_FIND_DATAA *data) {
printf("name=%s attrib=%08lX creation=%08lX%08lX\n", data->cFileName, data->dwFileAttributes,
data->ftCreationTime.dwHighDateTime, data->ftCreationTime.dwLowDateTime);
}
int main(void) {
WIN32_FIND_DATAA data = { 0 };
HANDLE handle = FindFirstFileA("C:\\Windows\\System\\*", &data);
print(&data);
FindNextFileA(handle, &data);
print(&data);
FindFirstFileA("C:\\Windows", &data);
print(&data);
FindFirstFileA("C:\\Windows\\System", &data);
print(&data);
return 0;
}
答案 0 :(得分:1)
来自MSDN:
使用句点作为路径中的目录组件来表示当前目录...
使用两个连续句点(..)作为路径中的目录组件来表示当前目录的父级
这意味着.
是当前目录,您可以依赖它们的属性是相同的。但无论如何我不明白为什么你不能忽略 dot 和 dotdot 文件。