列出目录 WinAPI 中的文件

Listing the Files in a Directory WinApi

本文关键字:文件 WinAPI      更新时间:2023-10-16

在目录中,我只有3个文件(诗.txt,mac.txt,some_file.txt(。

为什么在我的输出中 2 个名称为"."和".." 的奇怪文件?

什么?

#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
int main()
{
WIN32_FIND_DATA fileData;
HANDLE hFind = FindFirstFile(L"D:\Univesity\PROJECTS\OS_Course\poem_old\*", &fileData);
if (hFind != INVALID_HANDLE_VALUE) {
do {
//wcout << fileData.cFileName << endl;
WIN32_FIND_DATA compared_fileData;
HANDLE compared_hFind = FindFirstFile(L"D:\Univesity\PROJECTS\OS_Course\poem2_new\*", &compared_fileData);
if (compared_hFind != INVALID_HANDLE_VALUE) {
do {
//wcout << (wstring) fileData.cFileName << endl << (wstring) compared_fileData.cFileName;
if ( (wstring) fileData.cFileName == (wstring) compared_fileData.cFileName) {
FILETIME fileWriteTime = fileData.ftLastWriteTime;
FILETIME compared_fileWriteTime = compared_fileData.ftLastWriteTime;
/*
-1  First file time is earlier than second file time. 
0   First file time is equal to second file time. 
1   First file time is later than second file time. 
*/
int comparationResult = CompareFileTime(&fileWriteTime, &compared_fileWriteTime);
if (comparationResult == 1) {
wcout << "Comparation: " << (wstring)fileData.cFileName << " is later than " << (wstring)compared_fileData.cFileName << endl;
}
else if (comparationResult == -1) {
wcout << "Comparation: " << (wstring)fileData.cFileName << " is earlier than " << (wstring)compared_fileData.cFileName << endl;
}
}
} while (FindNextFile(compared_hFind, &compared_fileData));
}
} while (FindNextFile(hFind, &fileData));
FindClose(hFind);
}
}

输出:

比较: . 晚于 。

比较:.. 晚于 ..

比较:黑色.txt早于黑色.txt

比较:mac.txt 早于 mac.txt

比较:some_file.txt晚于some_file.txt

...是伪目录。语义记录如下:

  • 在路径中使用句点作为目录组件来表示当前目录,例如".\temp.txt"。有关详细信息,请参阅路径。
  • 使用两个连续的句点 (..( 作为路径中的目录组件来表示当前目录的父目录,例如"..\temp.txt"。有关详细信息,请参阅路径。