Deleting folders and contents issue



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 06/07/2007 at 14:05, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   R8.2-R10 
    Platform:   Windows  ; Mac  ;  Mac OSX  ; 
    Language(s) :     C++  ;

    ---------
    A user of my plugin notes that when a file 'thumbs.db' exists in a folder, he can't delete the folder completely from within my plugin. I can only think that either the file is being protected from deletion or that it is not being listed by the BrowseFiles interface.

    Here is the general code being used to delete a folder and all contents (files and subfolders, recursively) :

    // v1.1.7  
    // Delete Folder from Runtime Library  
    //*---------------------------------------------------------------------------*  
    Bool IPPDialog::DeleteFolder()  
    //*---------------------------------------------------------------------------*  
    {  
         // Valid Selection?  
         RuntimeItem*     folder =     root.GetSelectedFolder();  
         if (!folder)     return TRUE;  
         RuntimeItem*     parent =     folder->GetParent();  
         // Only delete below library and sub folders  
         if (folder->IsTypeOf(ITEMTYPE_RUNTIME))     return TRUE;  
         if (parent == folder->GetRuntime())          return TRUE;  
         // Are you sure?  
         if (!QuestionDialog(GeLoadString(IPPS_REMPOSE_YESNO)+"\n\""+folder->GetName()+"\""))     return TRUE;  
         Filename     folderFile =     folder->GetFilename();  
         if (!GeFKill(folderFile, TRUE))  
         {  
              // Are you REALLY sure? (folder is not empty)  
              if (!QuestionDialog(GeLoadString(IPPS_DELFOLDER_REALLY)))     return TRUE;  
              // Backward-Recursively delete subfolders and files in this folder  
              if (!DeleteFolderContents(folderFile))     return FALSE;  
              GeFKill(folderFile, TRUE);  
         }  
         // Update Display  
         root.SetSelected(NULL, SELECTION_NEW);  
         root.Fold(parent, FALSE);  
         root.Fold(parent, TRUE);  
         root.SetSelected(parent, SELECTION_NEW);  
         return TRUE;  
    }  
    // v1.1.7  
    // Delete Folder contents from Runtime Library - recursive  
    //*---------------------------------------------------------------------------*  
    Bool IPPDialog::DeleteFolderContents(const Filename& folder)  
    //*---------------------------------------------------------------------------*  
    {  
         AutoAlloc<BrowseFiles>     browse;  
         if (!browse)     return FALSE;  
         Filename          file;  
         BOOL               isdir;  
    #ifdef     C4D_R10  
         browse->Init(folder, BROWSEFILES_SUPPRESSCACHING);  
    #else  
         browse->Init(folder, FALSE);  
    #endif  
         while (browse->GetNext())  
         {  
              file =     folder+browse->GetFilename();  
              isdir =     browse->IsDir();  
              // Delete Folder's contents  
              if (isdir)  
              {  
                   if (!DeleteFolderContents(file))     return FALSE;  
              }  
              // Delete Folder or File  
              if (!GeFKill(file, isdir))          return FALSE;  
         }  
         return TRUE;  
    }  
    

    Any information on why this occurs and how to work around it is much appreciated!

    Thank you very much,
    Robert


Log in to reply