c++ - 为什么这种删除文件夹内文件的方法不起作用?

标签 c++ winapi directory delete-file

std::wstring inxmpath ( L"folder" );
HANDLE hFind;
BOOL bContinue = TRUE;
WIN32_FIND_DATA data;
hFind = FindFirstFile(inxmpath.c_str(), &data); 
// If we have no error, loop through the files in this dir
int counter = 0;
while (hFind && bContinue) {
        std::wstring filename(data.cFileName);
        std::string fullpath = "folder/";
        fullpath += (const char* )filename.c_str();
        if(remove(fullpath.c_str())!=0) return error;
    bContinue = FindNextFile(hFind, &data);
    counter++;
}
FindClose(hFind); // Free the dir

我不明白为什么它不起作用,我认为它与 wstring 和 string 之间的转换有关,但我不确定。我有一个包含一些 .txt 文件的文件夹,我需要使用 C++ 删除所有这些文件。里面没有文件夹什么的。这有多难?

最佳答案

其次,根据 MSDN 关于 FindFirstFile 函数的说法:

“在目录中搜索名称为 匹配特定名称(如果使用通配符,则匹配部分名称)。”

我在您的输入字符串中看不到通配符,所以我只能猜测 FindFirstFile 将在当前执行目录中查找名为 "folder" 的文件。

尝试寻找 "folder\\*"

关于c++ - 为什么这种删除文件夹内文件的方法不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12462178/

相关文章:

c++ - 如何使用 qsort 在 C++ 中对字符串数组进行排序?

c++ - 你最喜欢的 C++ 习语是什么?

c++ - 为什么 FormatMessage 只为 ERROR_SYSTEM_PROCESS_TERMINATED 和 ERROR_UNHANDLED_EXCEPTION 系统错误创建部分消息?

c# - c#如何判断一个文件夹是否复制完成

c++ - 为什么会出现这些点(c++ dirent.h)

c# - 如何将 BYTE* 发送到与 SendMessage 互操作的 c#?

c++ - 如何将迭代器传递给 std::lower_bound() 比较函数?

c - Windows编程中关于 "ScrollWindow"API函数第四个参数的困惑

windows - HWND在窗口站中是独一无二的吗?

search - 批量文件搜索和创建多个单词