我需要帮助删除使用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:您是否在目标目录中包含一些已标记为只读的文件和/或其他目录?你的代码似乎没有预料到/处理这两个问题。是的,这是真的,因为首先我正在编写一个简单的代码,然后我将处理其余的问题。