如何从文件名向量中删除隐藏文件

How to delete hidden files from a vector of file names?

本文关键字:删除 隐藏文件 向量 文件名      更新时间:2023-10-16

在我正在编写的程序中,有一个函数从特定目录中获取所有文件名,并将它们放入向量中,以便稍后在程序中使用它们。

然而,这也会抓取碰巧在文件夹中的任何隐藏文件。我试过让程序删除任何以'开头的文件。’,但这对我正在测试的文件夹不起作用(我仍然得到".."作为文件列出)。

下面是这段代码:

while (handle != INVALID_HANDLE_VALUE)
{
     filenameList.push_back(search_data.cFileName);
    if (FindNextFile(handle, &search_data) == FALSE)
        break;
}
    //removes a lot of hidden files from the file list
    for (int i = 0; i < filenameList.size(); i++)
    {
        string hiddenCheck = filenameList[i];
        if (hiddenCheck[0] == '.') 
        {
            filenameList.erase(filenameList.begin() + i);
            i = 0;
        }

在枚举文件时需要查看文件属性:

HANDLE handle = FindFirstFile(..., &search_data);
if (handle != NULL)
{
    do
    {
        // if not a directory, and not hidden...
        if ((search_data.dwFileAttributes & (FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_HIDDEN)) == 0)
        {
            // add it to the list...
            filenameList.push_back(search_data.cFileName);
        }
    }
    while (FindNextFile(handle, &search_data));
    FindClose(handle);
}