本文整理汇总了C++中RemoveDirectoryA函数的典型用法代码示例。如果您正苦于以下问题:C++ RemoveDirectoryA函数的具体用法?C++ RemoveDirectoryA怎么用?C++ RemoveDirectoryA使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了RemoveDirectoryA函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: test_RemoveDirectoryA
static void test_RemoveDirectoryA(void)
{
char tmpdir[MAX_PATH];
BOOL ret;
GetTempPathA(MAX_PATH, tmpdir);
lstrcatA(tmpdir, "Please Remove Me");
ret = CreateDirectoryA(tmpdir, NULL);
ok(ret == TRUE, "CreateDirectoryA should always succeed\n");
ret = RemoveDirectoryA(tmpdir);
ok(ret == TRUE, "RemoveDirectoryA should always succeed\n");
lstrcatA(tmpdir, "?");
ret = RemoveDirectoryA(tmpdir);
ok(ret == FALSE && (GetLastError() == ERROR_INVALID_NAME ||
GetLastError() == ERROR_PATH_NOT_FOUND),
"RemoveDirectoryA with ? wildcard name should fail, ret=%s error=%d\n",
ret ? " True" : "False", GetLastError());
tmpdir[lstrlenA(tmpdir) - 1] = '*';
ret = RemoveDirectoryA(tmpdir);
ok(ret == FALSE && (GetLastError() == ERROR_INVALID_NAME ||
GetLastError() == ERROR_PATH_NOT_FOUND),
"RemoveDirectoryA with * wildcard name should fail, ret=%s error=%d\n",
ret ? " True" : "False", GetLastError());
}
示例2: RemoveDirectoryA
bool FileSystem::FolderRemove(const String& path, bool recursive /*= true*/) const
{
if (!IsFolderExist(path))
return false;
if (!recursive)
return RemoveDirectoryA(path.Data()) == TRUE;
WIN32_FIND_DATA f;
HANDLE h = FindFirstFile((path + "/*").Data(), &f);
if (h != INVALID_HANDLE_VALUE)
{
do
{
if (strcmp(f.cFileName, ".") == 0 || strcmp(f.cFileName, "..") == 0)
continue;
if (f.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
FolderRemove(path + "/" + f.cFileName, true);
else
FileDelete(path + "/" + f.cFileName);
} while (FindNextFile(h, &f));
}
FindClose(h);
return RemoveDirectoryA(path.Data()) == TRUE;
}
示例3: DeleteDirectory
BOOL DeleteDirectory(const char* sPath) {
HANDLE hFind; // file handle
WIN32_FIND_DATAA FindFileData;
char DirPath[MAX_PATH];
char FileName[MAX_PATH];
strcpy(DirPath,sPath);
strcat(DirPath,"\\*"); // searching all files
strcpy(FileName,sPath);
strcat(FileName,"\\");
hFind = FindFirstFileA(DirPath,&FindFileData); // find the first file
if(hFind == INVALID_HANDLE_VALUE) return FALSE;
strcpy(DirPath,FileName);
bool bSearch = true;
while(bSearch) { // until we finds an entry
if(FindNextFileA(hFind,&FindFileData)) {
if(IsDots(FindFileData.cFileName)) continue;
strcat(FileName,FindFileData.cFileName);
if((FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
// we have found a directory, recurse
if(!DeleteDirectory(FileName)) {
FindClose(hFind);
return FALSE; // directory couldn't be deleted
}
RemoveDirectoryA(FileName); // remove the empty directory
strcpy(FileName,DirPath);
}
else {
if(!DeleteFileA(FileName)) { // delete the file
FindClose(hFind);
return FALSE;
}
strcpy(FileName,DirPath);
}
}
else {
if(GetLastError() == ERROR_NO_MORE_FILES) // no more files there
bSearch = false;
else {
// some error occured, close the handle and return FALSE
FindClose(hFind);
return FALSE;
}
}
}
FindClose(hFind); // closing file handle
return RemoveDirectoryA(sPath); // remove the empty directory
}
示例4: test_inffilelistA
static void test_inffilelistA(void)
{
static const char inffile2[] = "test2.inf";
static const char *inf =
"[Version]\n"
"Signature=\"$Chicago$\"";
char buffer[MAX_PATH] = { 0 };
char dir[MAX_PATH], *p;
DWORD expected, outsize;
BOOL ret;
if(!pSetupGetInfFileListA)
{
win_skip("SetupGetInfFileListA not present\n");
return;
}
/* create a private directory, the temp directory may contain some
* inf files left over from old installations
*/
if (!GetTempFileNameA(CURR_DIR, "inftest", 1, dir))
{
win_skip("GetTempFileNameA failed with error %d\n", GetLastError());
return;
}
if (!CreateDirectoryA(dir, NULL ))
{
win_skip("CreateDirectoryA(%s) failed with error %d\n", dir, GetLastError());
return;
}
if (!SetCurrentDirectoryA(dir))
{
win_skip("SetCurrentDirectoryA failed with error %d\n", GetLastError());
RemoveDirectoryA(dir);
return;
}
create_inf_file(inffile, inf);
create_inf_file(inffile2, inf);
/* mixed style
*/
expected = 3 + strlen(inffile) + strlen(inffile2);
ret = pSetupGetInfFileListA(dir, INF_STYLE_OLDNT | INF_STYLE_WIN4, buffer,
MAX_PATH, &outsize);
ok(ret, "expected SetupGetInfFileListA to succeed!\n");
ok(expected == outsize, "expected required buffersize to be %d, got %d\n",
expected, outsize);
for(p = buffer; lstrlenA(p) && (outsize > (p - buffer)); p+=lstrlenA(p) + 1)
ok(!lstrcmpA(p,inffile2) || !lstrcmpA(p,inffile),
"unexpected filename %s\n",p);
DeleteFileA(inffile);
DeleteFileA(inffile2);
SetCurrentDirectoryA(CURR_DIR);
RemoveDirectoryA(dir);
}
示例5: test_fullpath
static void test_fullpath(void)
{
char full[MAX_PATH];
char tmppath[MAX_PATH];
char prevpath[MAX_PATH];
char level1[MAX_PATH];
char level2[MAX_PATH];
char teststring[MAX_PATH];
char *freeme;
BOOL rc,free1,free2;
free1=free2=TRUE;
GetCurrentDirectoryA(MAX_PATH, prevpath);
GetTempPathA(MAX_PATH,tmppath);
strcpy(level1,tmppath);
strcat(level1,"msvcrt-test\\");
rc = CreateDirectoryA(level1,NULL);
if (!rc && GetLastError()==ERROR_ALREADY_EXISTS)
free1=FALSE;
strcpy(level2,level1);
strcat(level2,"nextlevel\\");
rc = CreateDirectoryA(level2,NULL);
if (!rc && GetLastError()==ERROR_ALREADY_EXISTS)
free2=FALSE;
SetCurrentDirectoryA(level2);
ok(_fullpath(full,"test", MAX_PATH)!=NULL,"_fullpath failed\n");
strcpy(teststring,level2);
strcat(teststring,"test");
ok(strcmp(full,teststring)==0,"Invalid Path returned %s\n",full);
ok(_fullpath(full,"\\test", MAX_PATH)!=NULL,"_fullpath failed\n");
memcpy(teststring,level2,3);
teststring[3]=0;
strcat(teststring,"test");
ok(strcmp(full,teststring)==0,"Invalid Path returned %s\n",full);
ok(_fullpath(full,"..\\test", MAX_PATH)!=NULL,"_fullpath failed\n");
strcpy(teststring,level1);
strcat(teststring,"test");
ok(strcmp(full,teststring)==0,"Invalid Path returned %s\n",full);
ok(_fullpath(full,"..\\test", 10)==NULL,"_fullpath failed to generate error\n");
freeme = _fullpath(NULL,"test", 0);
ok(freeme!=NULL,"No path returned\n");
strcpy(teststring,level2);
strcat(teststring,"test");
ok(strcmp(freeme,teststring)==0,"Invalid Path returned %s\n",freeme);
free(freeme);
SetCurrentDirectoryA(prevpath);
if (free2)
RemoveDirectoryA(level2);
if (free1)
RemoveDirectoryA(level1);
}
示例6: delete_test_files
static void delete_test_files(void)
{
DeleteFileA("a.txt");
DeleteFileA("b.txt");
DeleteFileA("testdir\\c.txt");
DeleteFileA("testdir\\d.txt");
RemoveDirectoryA("testdir");
RemoveDirectoryA("dest");
DeleteFileA("extract.cab");
}
示例7: delete_test_files
static void delete_test_files(void)
{
DeleteFileA("msitest.msi");
DeleteFileA("msitest.cab");
DeleteFileA("msitest\\second\\three.txt");
DeleteFileA("msitest\\first\\two.txt");
DeleteFileA("msitest\\one.txt");
RemoveDirectoryA("msitest\\second");
RemoveDirectoryA("msitest\\first");
RemoveDirectoryA("msitest");
}
示例8: strlen
bool FileSystemDefault::DeleteDirectory(const char* path)
{
// The following is copied from the EAIO package.
// This code is not smart enough to do a recursive delete, but the one in EAIO is.
// We need to implement a recursive delete.
// Windows doesn't like it when the directory path ends with a
// separator (e.g. '\') character, so we correct for this if needed.
if(path && *path)
{
const size_t nStrlen = strlen(path);
if((path[nStrlen - 1] != '/') && (path[nStrlen - 1] != '\\'))
{
#if defined(EA_PLATFORM_MICROSOFT)
return (RemoveDirectoryA(path) != 0);
#elif defined(EA_PLATFORM_UNIX) || defined(CS_UNDEFINED_STRING)
return (rmdir(path) == 0);
#endif
}
// Else we need to remove the separator.
char pathMod[EA::WebKit::FileSystem::kMaxPathLength];
EAW_ASSERT_MSG(nStrlen < EA::WebKit::FileSystem::kMaxPathLength, "Directory path exceeds max path length");
memcpy(pathMod, path, nStrlen - 1); // Force 0 terminator in place of directory separator
pathMod[nStrlen - 1] = 0;
return DeleteDirectory(pathMod); // Call ourselves recursively.
}
return false;
}
示例9: p_dir_remove
P_LIB_API pboolean
p_dir_remove (const pchar *path,
PError **error)
{
if (P_UNLIKELY (path == NULL)) {
p_error_set_error_p (error,
(pint) P_ERROR_IO_INVALID_ARGUMENT,
0,
"Invalid input argument");
return FALSE;
}
if (!p_dir_is_exists (path)) {
p_error_set_error_p (error,
(pint) P_ERROR_IO_NOT_EXISTS,
0,
"Specified directory doesn't exist");
return FALSE;
}
if (P_UNLIKELY (RemoveDirectoryA (path) == 0)) {
p_error_set_error_p (error,
(pint) p_error_get_last_io (),
p_error_get_last_system (),
"Failed to call RemoveDirectoryA() to remove directory");
return FALSE;
} else
return TRUE;
}
示例10: CleanUpDirs
BOOL CleanUpDirs()
{
DWORD dwAtt;
int i;
BOOL result = TRUE;
for (i = 0; i < numDirTests - 1; i++ )
{
dwAtt = GetFileAttributesA(gfaTestsDir[i].name);
if( dwAtt != INVALID_FILE_ATTRIBUTES )
{
if(!SetFileAttributesA (gfaTestsDir[i].name, FILE_ATTRIBUTE_DIRECTORY))
{
result = FALSE;
Trace("ERROR:%d: Error setting attributes [%s][%d]\n", GetLastError(), gfaTestsDir[i].name, (FILE_ATTRIBUTE_NORMAL | FILE_ATTRIBUTE_DIRECTORY));
}
if(!RemoveDirectoryA (gfaTestsDir[i].name))
{
result = FALSE;
Trace("ERROR:%d: Error deleting file [%s][%d]\n", GetLastError(), gfaTestsDir[i].name, dwAtt);
}
}
}
return result;
}
示例11: CleanUp
BOOL CleanUp()
{
DWORD dwAtt;
BOOL result = TRUE;
dwAtt = GetFileAttributesA(szFindName);
if( dwAtt != INVALID_FILE_ATTRIBUTES )
{
if(!SetFileAttributesA (szFindName, FILE_ATTRIBUTE_NORMAL))
{
result = FALSE;
Trace("ERROR:%d: Error setting attributes [%s][%d]\n", szFindName, FILE_ATTRIBUTE_NORMAL);
}
if(!DeleteFileA (szFindName))
{
result = FALSE;
Trace("ERROR:%d: Error deleting file [%s][%d]\n", GetLastError(), szFindName, dwAtt);
}
}
dwAtt = GetFileAttributesA(szDirName);
if( dwAtt != INVALID_FILE_ATTRIBUTES )
{
if(!RemoveDirectoryA (szDirName))
{
result = FALSE;
Trace("ERROR:%d: Error deleting file [%s][%d]\n", GetLastError(), szDirName, dwAtt);
}
}
return result;
}
示例12: MSVCRT__rmdir
/*********************************************************************
* _rmdir ([email protected])
*
* Delete a directory.
*
* PARAMS
* dir [I] Name of directory to delete.
*
* RETURNS
* Success: 0. The directory indicated by newdir is deleted.
* Failure: -1. errno indicates the error.
*
* NOTES
* See RemoveDirectoryA.
*/
int CDECL MSVCRT__rmdir(const char * dir)
{
if (RemoveDirectoryA(dir))
return 0;
msvcrt_set_errno(GetLastError());
return -1;
}
示例13: _CFRemoveDirectory
__private_extern__ Boolean _CFRemoveDirectory(const char *path) {
#if defined(__WIN32__)
return RemoveDirectoryA(path);
#else
return ((rmdir(path) == 0) ? true : false);
#endif
}
示例14: sys_rmdir
/*
* Arguments: path (string)
* Returns: [boolean]
*/
static int
sys_rmdir (lua_State *L)
{
const char *path = luaL_checkstring(L, 1);
int res;
#ifndef _WIN32
sys_vm_leave(L);
res = rmdir(path);
sys_vm_enter(L);
#else
{
void *os_path = utf8_to_filename(path);
if (!os_path)
return sys_seterror(L, ERROR_NOT_ENOUGH_MEMORY);
sys_vm_leave(L);
res = is_WinNT
? !RemoveDirectoryW(os_path)
: !RemoveDirectoryA(os_path);
free(os_path);
sys_vm_enter(L);
}
#endif
if (!res) {
lua_pushboolean(L, 1);
return 1;
}
return sys_seterror(L, 0);
}
示例15: RemoveDirectory
bool RemoveDirectory(const char* path)
{
#ifdef TARGET_WINDOWS
return RemoveDirectoryA(path) != 0;
#else
return rmdir(path) == 0;
#endif // TARGET_WINDOWS
}