Les Snippets

Connexion

Suppression d'un dossier et de son contenu

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 26/04/2007 14:13:54 et initié par Renfield [Liste]
Date de mise à jour : 05/10/2009 15:13:09
Vue : 23277
Catégorie(s) : Fichier / Disque
Langages dispo pour ce code :
- VB6, VBA
- VB 2005, VB.NET 1.x
- Javascript
- Windev
- VB6, VBA
- C# 2.x, C# 3.x
- PHP 5



Langage : VB6 , VBA
Date ajout : 26/04/2007
Posté par Renfield [Liste]
DateMAJ : 02/05/2007
Public Sub RmDir(ByVal vsFolder As Variant)
Dim sName As Variant
Dim oKillElements As Collection
   On Local Error Resume Next
   If VarType(vsFolder) <> vbString Then
       Err.Raise 5
   Else
       If Right$(vsFolder, 1) = "\" Then
           vsFolder = Left$(vsFolder, Len(vsFolder) - 1)
       End If
       Set oKillElements = New Collection
       sName = Dir$(vsFolder & "\*.*", vbDirectory Or vbReadOnly Or vbHidden Or vbSystem)
       Do While Len(sName)
           If (sName <> "..") And (sName <> ".") Then
               oKillElements.Add vsFolder & "\" & sName
           End If
           sName = Dir$()
       Loop
       For Each sName In oKillElements
           If GetAttr(sName) And vbDirectory Then
               RmDir sName
           Else
               SetAttr sName, vbNormal
               Kill sName
           End If
       Next sName
       VBA.FileSystem.RmDir vsFolder
   End If
End Sub 
Remarque :
RmDir ne supprime que les dossiers vides.

là, ça fonctionne même si des fichiers sont présents en lecture seule (FSO s'arrête, lui...)
Langage : VB.NET 1.x , VB 2005
Date ajout : 27/04/2007
Posté par Drikce06 [Liste]
    Sub SupprimerDossier(ByVal PathOfDirectory As String)
        If My.Computer.FileSystem.DirectoryExists(PathOfDirectory) = True Then
            My.Computer.FileSystem.DeleteDirectory(PathOfDirectory, FileIO.DeleteDirectoryOption.DeleteAllContents)
        Else
            MsgBox("Le dossier à supprimer n'existe pas")
        End If
    End Sub
    '**** Exemple d'utilisation
    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click
        SupprimerDossier("C:\Nouveau dossier")
    End Sub
Langage : Javascript
Date ajout : 27/04/2007
Posté par bultez [Liste]
<script type="text/javascript">
    
    var fso=new ActiveXObject("Scripting.FileSystemObject");
    fso.DeleteFolder("nom du répertoire à détruire",true ou false);
    //    false, le répertoire ne sera détruit que s'il est vide
    //    true, force la destruction du répertoire même s'il
    //                contient des sous/répertoires et/ou des fichiers

</script>


Langage : Windev
Date ajout : 28/04/2007
Posté par Elian Lacroix [Liste]
fRepSupprime(<répertoire>)
Les options disponibles :
- frLectureSeule : fichier en lecture seule également
- frRécursif : arborescence également,
- frVersCorbeille - dossier supprimé mais reste accessible en corbeille
Langage : VB6 , VBA
Date ajout : 11/06/2008
Posté par PCPT [Liste]
DateMAJ : 14/06/2008
Private Const NOERROR As Long 0&
Private Const FO_DELETE As Long &H3
Private Const FOF_ALLOWUNDO As Long &H40
Private Const FOF_CONFIRMMOUSE As Long &H2
Private Const FOF_FILESONLY As Long &H80 '  on *.*, do only files
Private Const FOF_MULTIDESTFILES As Long = &H1
Private Const FOF_NOCONFIRMATION As Long = &H10 '  Don't prompt the user.
Private Const FOF_NOCONFIRMMKDIR As Long = &H200 ' don't confirm making any needed dirs
Private Const FOF_RENAMEONCOLLISION As Long  = &H8
Private Const FOF_SILENT As Long &H4    ' don't create  progress/report
Private Const FOF_SIMPLEPROGRESS As Long = &H100 ' means don't show names of files
Private Const FOF_WANTMAPPINGHANDLE As Long  = &H20 ' Fill in SHFILEOPSTRUCT.hNameMappings
Private Type SHFILEOPSTRUCT
    hWnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAborted As Boolean
    hNameMaps As Long
    sProgress As String
End Type
Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As AnyAs Long
Public Function DeleteContentDirectory(ByVal  sDirSrc As  String, Optional ByVal  lHandle As Long  = 0, Optional ByVal bDeleteContainerFolder As Boolean  = True, Optional ByVal bIncludeSubFolders As Boolean  = True, Optional ByVal bShowWindowsProgressBox As Boolean  = False, Optional ByVal bSendToRecycleBin As Boolean  = False, Optional ByVal bShowWindowsAskActionBox As Boolean  = False) As Boolean
'sDirSrc                    -> répertoire à  supprimer
'lHandle                    -> handle  appelant (peut rester à 0)
'bDeleteContainerFolder     -> supprimer le contenu ou  également le dossier
'bIncludeSubFolders          -> suppression récursive? ne peut être à faux si on doit supprimer le dossier  parent
'bShowWindowsProgressBox    -> affiche  la progressbox windows
'bSendToRecycleBin          -> suppression vers la corbeille,  sinon définitive
'bShowWindowsAskActionBox   ->  boite de dialogue "confirmation de suppression" (ou d'envoi vers corbeille). NB  : si FALSE, il n'y a pas non plus de ProgressBox
    On Error GoTo Err_Handler
    Dim tFOS As SHFILEOPSTRUCT
'   on ne peut  pas supprimer le dossier parent si on ne supprime pas TOUT le  contenu
    If (bDeleteContainerFolder = TrueAnd  (bIncludeSubFolders = False) Then  Exit Function
    
'   formate le  chemin
    If bIncludeSubFolders And bDeleteContainerFolder Then
        If RightB$(sDirSrc, 2) = "\" Then sDirSrc = LeftB$(sDirSrc, LenB(sDirSrc) - 2)
    Else
        If Not (RightB$(sDirSrc, 2) = "\"Then sDirSrc = sDirSrc & "\"
        sDirSrc = sDirSrc & "*.*"
    End If
'   structure
    With tFOS
        .hWnd = lHandle
        .wFunc = FO_DELETE
        .pFrom = sDirSrc & vbNullChar
        .pTo = vbNullChar
        .fFlags = CInt(SetFOSFlag(bIncludeSubFolders, bShowWindowsProgressBox,  False,  bShowWindowsAskActionBox, bSendToRecycleBin, False))
        .fAborted = False
        .hNameMaps = 0&
        .sProgress = vbNullChar
    End With
        
'    API
    DeleteContentDirectory = (SHFileOperation(tFOS) =  NOERROR)
    
Err_Handler:
'   en IDE on peut avoir un message "Mémoire insuffisante" en fin  d'action malgré la réussite
    If Err.Number = Then DeleteContentDirectory =  True
End Function

Private Function SetFOSFlag(Optional ByVal bIncludeSubFolders As Boolean  = True, Optional ByVal bShowWindowsProgressBox As Boolean  = False, Optional ByVal bRenameIfExists As Boolean = False,  Optional ByVal bShowWindowsAskActionBox As Boolean  = False, Optional ByVal bAllowUndo As Boolean = False,  Optional ByVal bMulti  As Boolean = True) As  Long
    SetFOSFlag = FOF_WANTMAPPINGHANDLE Or  FOF_NOCONFIRMMKDIR
    If Not bIncludeSubFolders Then SetFOSFlag = SetFOSFlag  Or FOF_FILESONLY
    If Not bShowWindowsProgressBox Then SetFOSFlag = SetFOSFlag  Or FOF_SILENT
    If bRenameIfExists Then SetFOSFlag = SetFOSFlag Or FOF_RENAMEONCOLLISION
    If Not bShowWindowsAskActionBox Then SetFOSFlag = SetFOSFlag  Or FOF_NOCONFIRMATION
    If bAllowUndo Then SetFOSFlag = SetFOSFlag  Or FOF_ALLOWUNDO
    If bMulti Then SetFOSFlag = SetFOSFlag Or FOF_MULTIDESTFILES
End Function

Remarque :
bReussite = DeleteContentDirectory("C:\test", lHandle:=0, bDeleteContainerFolder:=True, bIncludeSubFolders:=True, bShowWindowsProgressBox:=False, bSendToRecycleBin:=True)
Langage : C# 2.x , C# 3.x
Date ajout : 03/11/2008
Posté par Willi [Liste]
public bool DeleteDir(string path)
{
    bool bdel = false;
    try
    {
        if (System.IO.Directory.Exists(path))
        {
            System.IO.Directory.Delete(path, true);
            bdel = true;
        }
        else
            bdel = false;
    }
    catch (Exception ex)
    {
        throw new Exception(ex.Message, ex);
    }
    return bdel;
}
Remarque :
Retourne true si ok; false en cas d'échec.
Langage : PHP 5
Date ajout : 05/10/2009
Posté par neigedhiver [Liste]
DateMAJ : 05/10/2009
$oDir = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::CHILD_FIRST); 
foreach ($oDir as $oFile) {
   $func = $oFile -> isDir() ? 'rmdir' : 'unlink';
   $func($oFile -> getPathname());
 } 
Remarque :
Il faut bien entendu que le serveur http ait les droits sur les fichiers et répertoires. Les fonctions rmdir() et unlink() renvoient toutes deux un booleen, il est donc aisé de lister les fichiers non supprimés.
Pour le fonctionnement des itérateurs récursifs, se reporter à la documentation : php.net/spl et php.net/~helly

Snippets en rapport avec : Dossier, Fichiers, Contenu, Suppression, Rmdir



Codes sources en rapport avec : Dossier, Fichiers, Contenu, Suppression, Rmdir

{PHP} SUPPRIMER 1 U PLUSIEURS RÉPERTOIRES ET TOUT CE QU'IL Y A DEDANS
Toujours pour suivre la mode des fonctions sur fichiers :-) voici une fonction permettant de supprim...

{PHP} EFFACER DOSSIERS ET FICHIERS RÉCALCITRANTS
Qui n'a pas eu ce problème un jour, un dossier ou un fichier que votre client FTP ne peut pas efface...

{Visual Basic, VB6, VB.NET, VB 2005} BART VOTRE BUREAU DANS UNE BARRE
Regroupez 20 icones dans une barre de travail afin de liberer un peu votre bureau. Cette barre se lo...

{Visual Basic, VB6, VB.NET, VB 2005} FILES REMOVER - SUPPRIMER UN GRAND NOMBRE DE FICHIERS
Une fois, en décompressant un zip, je me suis retrouvé avec plus de 200 000 fichiers et 50 000 dossi...

{Visual Basic, VB6, VB.NET, VB 2005} SUPPRESSION DE CERTAINS FICHIERS DANS UN RÉPERTOIRE PARTICULIER ET RÉCURSIVEMENT DANS SES SOUS-RÉPERTOIRES, CRÉÉS/MODIFIÉS/ACCÉDÉS A UNE CERTAINE DATE-VBS
Ce programme a été développé en vbscript, les 4 paramètres à entrer sont - le répertoire, dans lequ...

{C / C++ / C++.NET} LISTEUR DE FICHIERS/DOSSIERS
Ce petit programme écrit en C liste les fichiers/dossiers d'un repertoire. Il se démarque des autres...

{PHP} FONCTION RÉCURSIVE POUR GÉNÉRER UNE ARBORESCENCE DE FICHIERS AVEC FILTRES
Cette fonction vas générer une arborescence des fichiers & dossiers de manière graphique avec la pos...

{Visual Basic, VB6, VB.NET, VB 2005} SUPPRIMER DES FICHIERS EN DOUBLE (D'APRES LEUR NOM)
Permet de comparer et de supprimer des fichiers en double. Pour moi il me permet quand je grave des...

{Visual Basic, VB6, VB.NET, VB 2005} RENOMMER FICHIERS
Ce code permet de renommer en cascade des fichiers en fonction du nom du dossier et d'un numéro. Il...

{C# / C#.NET} CLASSEMENT DE FICHIERS
Code expérimental sur la gestion des fichiers ( liste le contenu d'un dossier , deplace les fichiers...