繁体   English   中英

列出目录 WinApi 中的文件

[英]Listing the Files in a Directory WinApi

在目录中,我只有 3 个文件(poem.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);
    }
}

输出:

比较:。 晚于 .

比较: .. 晚于 ..

对比:black.txt 早于 black.txt

对比:mac.txt 早于 mac.txt

对比:some_file.txt 晚于 some_file.txt

. ..是伪目录。 语义被记录在案

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM