我需要帮助删除使用DeleteDirectory和DeleteFile API函数的目录

我需要帮助删除使用DeleteDirectory和DeleteFile API函数的目录,c,winapi,C,Winapi,我编辑我的代码,但我仍然有相同的问题,文件不会删除,目录仍然没有删除,我需要帮助 #include<stdio.h> #include<Windows.h> #include<tchar.h> void Delete(WIN32_FIND_DATA x); int main(int argc , char*argv[]) { WIN32_FIND_DATA x , d; HANDLE f = FindFirstFile(L"d:\\Tex

我编辑我的代码,但我仍然有相同的问题,文件不会删除,目录仍然没有删除,我需要帮助

#include<stdio.h>
#include<Windows.h>
#include<tchar.h>

 void Delete(WIN32_FIND_DATA x);

int main(int argc , char*argv[])
{
    WIN32_FIND_DATA x , d;
    HANDLE f = FindFirstFile(L"d:\\Text\\*.*" , &x);
    if(f == INVALID_HANDLE_VALUE)
    {
        printf("Serach faild\n");
        return 0;
    }

    Delete(x);

    while(FindNextFile(f , &x))
        Delete(x);

    FindClose(f);

    printf("Now I'm going to delete the Directory\n");
    if(RemoveDirectory(L"d:\\Text"))
        printf("Successed\n");
    else
        printf("Did not\n");
}

 void Delete(WIN32_FIND_DATA x)
 {
    if((x.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0)
         {
            _tprintf(L"The first File name is %s\n" , x.cFileName);
            printf("I'm going To delete The File\n");
            if(DeleteFile(L"d:\\Text\\x.cFileName"))
                printf("File Deleted\n");
            else printf("False\n");
         }

    else
            _tprintf(L"The Directory name is %s\n" , x.cFileName);

 }
#包括
#包括
#包括
作废删除(WIN32_查找_数据x);
int main(int argc,char*argv[])
{
WIN32_查找_数据x,d;
句柄f=FindFirstFile(L“d:\\Text\\*.*”,&x);
if(f==无效的\u句柄\u值)
{
printf(“Serach失败\n”);
返回0;
}
删除(x);
while(FindNextFile(f和x))
删除(x);
FindClose(f);
printf(“现在我要删除目录\n”);
if(远程目录(L“d:\\Text”))
printf(“成功”\n);
其他的
printf(“未\n”);
}
作废删除(WIN32_查找_数据x)
{
if((x.dwFileAttributes和文件属性目录)==0)
{
_tprintf(L“第一个文件名是%s\n”,x.cFileName);
printf(“我要删除文件”\n”);
如果(删除文件(L“d:\\Text\\x.cFileName”))
printf(“文件已删除”);
else printf(“假”);
}
其他的
_tprintf(L“目录名为%s\n”,x.cFileName);
}

我在这段代码中找不到问题,我写下了我所知道的一切,任何人都可以编辑它来工作,谢谢大家

删除目录中的所有内容后,它仍将包含“.”和“.”目录的条目,无法删除(删除包含的目录除外)。因此,删除目录的代码将永远不会执行,但第二个
FindFirstFile
将始终显示两个条目,即使您已成功删除了所有内容。

代码不起作用的原因是delete函数始终尝试删除名为:
d:\\Text\\x.cFileName

相反,你需要的是:

        TCHAR buff[MAX_PATH];
        _tprintf(L"The first File name is %s\n" , x.cFileName);
        printf("I'm going To delete The File\n");
        _stprintf(buff, L"d:\\Text\\%s", x.cFileName);
        if(DeleteFile(buff))
            printf("File Deleted\n");
您可以使用该功能删除目录及其所有内容

WCHAR FilePath[MAX_PATH+1]=L"D:\\Text";
SHFILEOPSTRUCT Operation={0};
Operation.wFunc=FO_DELETE;
//FilePath needs to be double-null terminated
FilePath[wcslen(FilePath)+1]=L'\0';
Operation.pFrom=FilePath;
//Don't show any user interface during the operation
Operation.fFlags=FOF_SILENT|FOF_NOCONFIRMATION|FOF_NOERRORUI;
if(SHFileOperation(&Operation)==0) {
    printf("The directory has been deleted.");
}
else {
    //Handle error here
}

你的意思是删除文件而不是删除?shfileoperation API可以在一次调用中完成所有这些操作,但我的问题是,即使文件夹中的文件也无法完成deleted@Lara:您是否在目标目录中包含一些已标记为只读的文件和/或其他目录?你的代码似乎没有预料到/处理这两个问题。是的,这是真的,因为首先我正在编写一个简单的代码,然后我将处理其余的问题。