Les Snippets

Connexion

Lister tous les fichiers d'un repertoire

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 21/08/2006 16:53:02 et initié par foufou2004 [Liste]
Date de mise à jour : 22/02/2009 17:05:34
Vue : 53361
Catégorie(s) : Fichier / Disque
Langages dispo pour ce code :
- PHP 5
- VBA
- VB6, VBA
- Windev
- C# 2.x
- C# 2.x
- VB 2005
- PHP 4, PHP 5
- PHP 5
- Javascript
- VB6
- Java
- Windev
- Python
- Delphi 5
- VB 2008
- VB6, VBA



Langage : PHP 5
Date ajout : 21/08/2006
Posté par foufou2004 [Liste]
<?php
function ListingDirectory($path) {
  if (is_dir($path))
   {
     if ($dh = @opendir($path)) {
       while (($file = readdir($dh)) !== false) {
           if (($file != '.') && ($file != '..') && ($file != '...'))
               if (is_dir($path . $file))
                 ListingDirectory($path . $file . '/');
                else echo $path . $file.'<br>';
       }
       closedir($dh);
   }
   }
  elseif (is_file($path)) echo $path.'<br>';  
}
$directory = "./docs/";
ListingDirectory($directory);
?>
Langage : VBA
Date ajout : 27/08/2006
Posté par mortalino [Liste]

Sub Cherche_Fichiers_Dans_Dossier()
' *** le résultat peut apparaitre dans un message box (voir la syntaxe
'       mise en commentaire dans le code) mais je l'ai occulté car, pour cet exemple,
'       il y a environ 1 000 fichiers dans c:\.  Je me sers donc des cellules Excel

    Dim strMessage  As String
    Dim i           As Long
        Set fs = Application.FileSearch

With fs
    .LookIn = "C:\"  ' *** mettre ici le dossier voulu !
    .SearchSubFolders = True
    .Filename = "*.exe"
    If .Execute(SortBy:=msoSortByFileName, _
            SortOrder:=msoSortOrderAscending) > 0 Then
        MsgBox "Il y a " & .FoundFiles.Count & _
            " fichier(s) trouvé(s)."
        For i = 1 To .FoundFiles.Count
            Cells(i, 1).Value = .FoundFiles(i)
              'strMessage = strMessage & .FoundFiles(i) & vbCrLf
        Next i
              'MsgBox strMessage
    Else
        MsgBox "Il n'y a aucun fichier."
    End If
End With

End Sub


Langage : VB6 , VBA
Date ajout : 29/08/2006
Posté par PCPT [Liste]
DateMAJ : 15/12/2007
Public Function GetFilesPathFromDirectory(ByVal  sDir As String, ByRef aRet() As String, Optional ByVal sFilter As String = "*.txt"As Long
'   GetFilesPathFromDirectory retourne -1 si aucun fichier  trouvé
'   sinon retourne la dimension du tableau,  donc NB fichiers -1 (tableau commence à l'indice 0)
'   init les résultats
    GetFilesPathFromDirectory = -1
    Erase aRet
    If RightB$(sDir, 2) <> "\" Then sDir = sDir & "\"
'   formate le  chemin
    Dim sFile As String
    sFile = Dir(sDir & sFilter, vbHidden Or  vbSystem)
'    boucle sur tous les fichiers
    Do
        If LenB(sFile) Then
            GetFilesPathFromDirectory = GetFilesPathFromDirectory +  1
            ReDim Preserve aRet(GetFilesPathFromDirectory)
            aRet(GetFilesPathFromDirectory) = sDir &  sFile
            sFile = Dir
        End If
    Loop Until LenB(sFile) = 0
End Function




'   EXEMPLE D'UTILISATION
Private Sub Command1_Click() 
    Dim aResultat() As String 
    Dim lRet As Long 
    Dim i As Long 

    lRet = GetFilesPathFromDirectory("C:\Windows\", aResultat()) 
    If lRet <> -1 Then 
        For i = 0 To lRet 
            Debug.Print "Fichier " & i + 1 & " = " & aResultat(i) 
        Next i 
    End If 
End Sub

Langage : Windev
Date ajout : 14/09/2006
Posté par Elian Lacroix [Liste]
fListeFichier(sPath, "ListeFichier")
// Code de la procédure "ListeFichier" appelée automatiquement
// pour tous les fichiers (call-back)
Procédure ListeFichier(sChemin, sNomFichier,bChange,Pointeur)
Trace(sChemin+sNomFichier)

// Si besoin de limiter l'exploration au répertoire, sans ses sous-répertoires :
SI bChange = flChangeRépertoire ALORS RENVOYER Faux
Langage : C# 2.x
Date ajout : 01/11/2006
Posté par MorpionMx [Liste]
DateMAJ : 01/11/2006

string[] files = Directory.GetFiles(@"Chemin", "*.*", SearchOption.AllDirectories);

Remarque :
Si l'accés a un repertoire est refusé, alors une exception est levée et impossible de continuer le listing de fichier
Langage : C# 2.x
Date ajout : 01/11/2006
Posté par MorpionMx [Liste]
DateMAJ : 01/11/2006
public static void ListDir(string sourceDir, ref List<string> files) 
{
    DirectoryInfo dir = new DirectoryInfo(sourceDir);
     if (dir.Exists) 
    {

        try

        {
            foreach (string d in Directory.GetDirectories(sourceDir))
                ListDir(d, ref files); 
        }
        catch (UnauthorizedAccessException){} 
        foreach (string file in Directory.GetFiles(sourceDir)) 
            files.Add(file);
    }
}
// A appeler ainsi :
// List<string> files = newList<string>();
// ListDir(@"LeChemin", ref files);

Langage : VB 2005
Date ajout : 10/11/2006
Posté par Drikce06 [Liste]
Sub ListerRepertoire(ByVal NomDuRepartoire As String)

'Création d'un fichier Analyse.txt pour énumérer les fichiers trouvés
Dim sw As StreamWriter = File.CreateText("C:\Analyse.txt")

'Ecrit au début du fichier le répertoire parcouru et la date
sw.WriteLine("Répertoire racine analysé : " & NomDuRepartoire) 
sw.WriteLine(DateTime.Now)

Dim list As System.Collections.ObjectModel.ReadOnlyCollection(Of String)

'Parcours tous les fichiers du répertoire
list = My.Computer.FileSystem.GetFiles(NomDuRepartoire, FileIO.SearchOption.SearchTopLevelOnly)

'FileIO.SearchOption.SearchAllSubDirectories permet également de parcourir les sous répertoires


Dim path As String

For Each path In list

'écrit le chemein du fichier dans un fichier text

sw.WriteLine(path)


Next


'fermeture du fichier texte

sw.Close()


End Sub

Langage : PHP 4 , PHP 5
Date ajout : 08/12/2006
Posté par kankrelune [Liste]
/*
*  Return a file list
*
* @param $dir the target directory
* @param $getExt if you want get just one type of files (ex : php or .php)
*
* @return bool|array  false on fail files array on success 
*/
function listFiles( $dir, $getExt = '')
{
    if(!is_dir($dir))
       return false;
    elseif(substr($dir,-1) !== DIRECTORY_SEPARATOR)
       $dir .= DIRECTORY_SEPARATOR;
    
    if(!empty($getExt) && $getExt[0] !== '.')
        $getExt = '.'.$getExt;
    
    $ret = array();
    foreach(glob($dir.'*'.$getExt, GLOB_NOSORT) as $contents)
    {
        if(is_file($contents))
          $ret[] = str_replace($dir,'',$contents);
    }
    return $ret;
}

Langage : PHP 5
Date ajout : 15/12/2006
Posté par malalam [Liste]
<?php
$sDir = '.';
$itDir = new RecursiveIteratorIterator (new RecursiveDirectoryIterator($sDir));
while (true === $itDir -> valid ()) {
    echo str_repeat ('---', $itDir -> getDepth ()), $itDir -> current (), '<br />';
    $itDir -> next ();
}
?>
Remarque :
Lire un répertoire récursivement en utilisant les itérateurs de PHP5
Langage : Javascript
Date ajout : 12/02/2007
Posté par bultez [Liste]
                                                     //
function Aller(repertoire)  // début d'un répertoire 
                                                //
{
     f = fso.GetFolder(repertoire);
                                                                             //
     var f1 = new Enumerator(f.files);      // les fichiers 
                                                                        //
     for (; !f1.atEnd(); f1.moveNext())
    { 
	    alert(f1.item());  // traitement de f1.item(), les fichiers
    }
                                                                                  //
     var f2=new Enumerator(f.subfolders);  // les sous/répertoires 
                                                                              //
     for (; !f2.atEnd(); f2.moveNext())
    { 
	    Aller(f2.item());  
    }	
}
  
    //
  // appel : Aller("répertoire initial ou support");
//


Remarque :
Exclusif Internet Explorer
Langage : VB6
Date ajout : 22/02/2007
Posté par jrivet [Liste]
DateMAJ : 23/02/2007
Function GetFilesPathFromDirectory(ByVal sDir As String, ByRef aRet() As String,  _
                        Optional ByVal sFilter As String = "*.*"As Long
Dim Fso As Object
Dim Fi
   GetFilesPathFromDirectory = -1
   Set Fso = CreateObject("Scripting.FileSystemObject")
   ReDim aRet(0)
   For Each Fi In Fso.GetFolder(sDir).Files
        'transformation du filtre pour en ressortir par ex: dll au lieu de  *.dll
       sFilter = Right(sFilter, (Len(sFilter) - InStrRev(sFilter, ".")))
       'recuperation de l'extension du  fichier
       If (Fso.GetExtensionName(Fi.Path) = sFilter) Or (sFilter = "*"Then
           'incrépentation de  la valeur a retourner
           aRet(UBound(aRet)) = Fi.Path
           ReDim Preserve aRet(UBound(aRet) + 1)
       End If
   Next
   'redimensionne le tableau pour que le dernier élément ne soit  pas vide
   ReDim Preserve aRet(UBound(aRet) - 1)
   GetFilesPathFromDirectory = UBound(aRet)
   Set Fso = Nothing
   Set Fi = Nothing
   
End Function

Remarque :
Fonction totalement inspirée par celle de PCPT mais utilisant le FileSystemObject

Langage : Java
Date ajout : 04/03/2007
Posté par Ombitious_Developper [Liste]
/**
  *
  */
import java.io.*;
String [] listFiles (String dir) throws Exception {
    return new File (dir).list ();
}
void showFiles (String dir) {
    String [] array = listFiles (dir);
    System.out.println ("Contenu du répertoire " + dir + ": ");
    for (int i = 0; i < array.length; ++i)
         System.out.println ("--" + array [i]);
}

Langage : Windev
Date ajout : 11/05/2007
Posté par drcharly93 [Liste]
ResFichier est une chaîne
//  Les fichiers présents dans le répertoire "C:\MesRépertoires\MesFichiers"
//  sont affichés dans la liste "ListeFichiers"
ResFichier = fRep("C:\MesRépertoires\MesFichiers\*.*", frFichier)
TANTQUE ResFichier <> ""
   ListeAjoute(ListeFichiers, ResFichier)
   ResFichier =  fRep("",  frFichier)
FIN
Langage : Python
Date ajout : 19/12/2007
Posté par 0x586e [Liste]
import os
def lf(d):
    f = os.listdir(d)
    o = []
    for i in f:
        if not(os.path.isdir(d+'/'+i)): o.append(i)
    return o
# Retourne un array avec les fichiers du repertoire donné.


Remarque :
Utilisation :
lf(repertoire)
Exemple :
lf('C:/')
Langage : Delphi 5
Date ajout : 14/02/2009
Posté par Caribensila [Liste]


{Liste (avec ou sans chemin complet) les fichiers d'un répertoire filtrés par leur extension,
ou tous les fichiers si aucune extension passée à la procedure.
SortFlag = 0   => Liste triée par ordre alphabétique
SortFlag = 1   => Liste triée par date de modification
SortFlag = 2   => Liste triée par date de création}

PROCEDURE FindFiles(Path: String; var ExtList, FilesList:  TStringList;
                         Const SortFlag : Integer = 0; Const  FullPathName : Boolean = false);
  VAR              FileInfo   : TSearchRec;
                         i               : Integer;
                        S               : string;
                        DateFormat : string;


          function IsWanted(FileName : String): Boolean;
            var        i : Integer;
            begin
            result := false;
            if (FileName='.') or (FileName='..') then exit;
            if ExtList.Count=0 then begin
              result := true;
              Exit;
            end;
            for i := 0 to ExtList.Count-1 do begin
              if AnsiUpperCase(ExtractFileExt(FileName))=AnsiUpperCase(ExtList[i]) then begin
                result := true;
                Break;
              end;
            end;
          end;


          function FileTimeToString(FileTime : TFileTime): String;
            var        SysTime    : TSystemTime;
                          LocalTime : TFileTime;
            begin
            result := '-------------------';
            if FileTimeToLocalFileTime( FileTime, LocalTime ) then begin
              if FileTimeToSystemTime( LocalTime, SysTime ) then begin
                result := DateTimeToStr(SystemTimeToDateTime(SysTime));
              end;
            end;
          end;


  BEGIN
  Path := IncludeTrailingPathDelimiter(Path);
  if not DirectoryExists(Path) then Exit;
  DateFormat := ShortDateFormat;
  ShortDateFormat := 'yyyy/MM/dd';
  if FindFirst(Path+'*', faAnyFile, FileInfo)=0 then begin
    repeat
      if IsWanted(FileInfo.Name) then
      case SortFlag of
        0 : begin
              if FullPathName then FilesList.Add(Path + FileInfo.Name)
              else FilesList.Add(FileInfo.Name);
            end;
        1 : begin
              if FullPathName then FilesList.Add(DateTimeToStr(FileDateToDateTime(FileInfo.Time)) + Path + FileInfo.Name)
              else FilesList.Add(DateTimeToStr(FileDateToDateTime(FileInfo.Time)) + FileInfo.Name);
            end;
        2 : begin
              if FullPathName then FilesList.Add(FileTimeToString(FileInfo.FindData.ftCreationTime) + Path + FileInfo.Name)
              else FilesList.Add(FileTimeToString(FileInfo.FindData.ftCreationTime) + FileInfo.Name);
            end;
      end;
    Until FindNext(FileInfo)<>0;
  end;
  ShortDateFormat := DateFormat;//On rétablit le ShortDateFormat.
  if SortFlag <> 0 then begin
    FilesList.Sort;
    for i := 0 to FilesList.Count-1 do begin
      S := FilesList[i];
      Delete(S,1,19);//On élimine les dates.
      FilesList[i] := S;
    end;
  end;
  FindClose(FileInfo);
END;



{Exemple 1
Liste les fichiers *.txt et *.rtf triés par ordre de création
avec leur chemin complet :


var  ExtList   : TStringList;
       FilesList : TStringList;
...

ExtList    := TStringList.Create;
FilesList := TStringList.Create;
try
  ExtList.Add('.txt');
  ExtList.Add('.rtf');
  FindFiles(Edit1.Text, ExtList, FilesList, 2, true);
  ListBox1.Items.Assign(FilesList);
finally
  FilesList.Free;
  ExtList.Free ;
end;}


{Exemple 2
Liste tous les fichiers triés par ordre alphabétique :


var  ExtList   : TStringList;
       FilesList : TStringList;
...

ExtList    := TStringList.Create;
FilesList := TStringList.Create;
try
  FindFiles(Edit1.Text, ExtList, FilesList);
  ListBox1.Items.Assign(FilesList);
finally
  FilesList.Free;
  ExtList.Free ;
end; }


Langage : VB 2008
Date ajout : 22/02/2009
Posté par PCPT [Liste]
DateMAJ : 22/02/2009
    Private Function DirToList(ByVal sFolder As StringOptional ByVal sFilter As String = "*.*"Optional ByVal bRecurvise As Boolean = TrueAs List(Of String)
        'résultat sous forme de collection de chaîne
        Dim ListResult As New List(Of String)
        'récupère le tableau
        Dim asDir() As String = DirToArray(sFolder, sFilter, bRecurvise)
        'intègre dans la liste
        If Not (asDir Is NothingThen
            For Each s As String In asDir
                ListResult.Add(s)
            Next
        End If
        Return ListResult
    End Function
    Private Function DirToArray(ByVal sFolder As StringOptional ByVal sFilter As String = "*.*"Optional ByVal bRecurvise As Boolean = TrueAs String()
        'ajoute le dernier "\"
        If Not (sFolder(sFolder.Length - 1= "\"cThen sFolder &= "\"
        'le dossier doit existe
        If Not (System.IO.Directory.Exists(sFolder)) Then Return Nothing
        'récupère le tableau depuis class framework
        If bRecurvise Then
            Return System.IO.Directory.GetFiles(sFolder, sFilter, IO.SearchOption.AllDirectories)
        Else
            Return System.IO.Directory.GetFiles(sFolder, sFilter, IO.SearchOption.TopDirectoryOnly)
        End If
    End Function

    'EXEMPLE
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim PhpFiles As List(Of String= DirToList("C:\Program Files\wamp\www""*.php"True)
        Dim sPluriel As String = String.Empty
        If (PhpFiles.Count > 1Then sPluriel = "s"
        Console.WriteLine(String.Format("{0} fichier{1} trouvé{1}", PhpFiles.Count, sPluriel))
        For Each s As String In PhpFiles
            Console.WriteLine(s)
        Next
    End Sub
Remarque :
le retour "tableau" sera plus rapide, le retour "list" est proposé pour information / besoin spécifique

il est ici possible de choisir le dossier de départ, le filtre, et chercher dans les sous-dossiers
Langage : VB6 , VBA
Date ajout : 18/03/2009
Posté par Charles Racaud [Liste]
Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
Private Const INVALID_HANDLE_VALUE = -1

Private Type WIN32_FIND_DATAW
  dwFileAttributes As Long
  ftCreationTime As Currency
  ftLastAccessTime As Currency
  ftLastWriteTime As Currency
  nFileSizeHigh As Long
  nFileSizeLow As Long
  dwReserved0 As Long
  dwReserved1 As Long
  cFileName(519As Byte
  cAlternate(27As Byte
End Type

Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileW" (ByVal lpFileName As Long, lpFindFileData As WIN32_FIND_DATAW) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileW" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATAW) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As LongAs Long

Private Function GetDirectoryFiles(ByVal DirectoryName As StringByRef Files() As StringOptional ByVal Filter As String = "*"As Long
  Dim fData As WIN32_FIND_DATAW
  Dim hSearch As Long
  Dim FilesCount As Long
  Dim File As String
  Erase Files
  hSearch = FindFirstFile(StrPtr(DirectoryName & "\" & Filter), fData)
  If Not hSearch = INVALID_HANDLE_VALUE Then
    Do
      If Not (fData.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then
        File = fData.cFileName
        File = VBA.Left$(File, InStr(File, Chr$(0)) - 1)
        ReDim Preserve Files(FilesCount)
        Files(FilesCount) = File
        FilesCount = FilesCount + 1
      End If
    Loop While FindNextFile(hSearch, fData)
    Call FindClose(hSearch)
  End If
  GetDirectoryFiles = FilesCount
End Function
Remarque :
Inspirée des fonctions précédentes mais avec la gestion Unicode donc par l'utilisation d'APIs.

Snippets en rapport avec : File, Fichier, Dossier, Liste, Folder



Codes sources en rapport avec : File, Fichier, Dossier, Liste, Folder

{Visual Basic, VB6, VB.NET, VB 2005} CLASSE DE GESTION DES FICHIERS/DOSSIERS ==> INFOS (DATES, COPYRIGHT...), LISTING, COPIER, CORBEILLE, BOITES DE DIALOGUE ... LE TOUT PAR APIS
Ce code est une classe qui permet de faire différentes actions sur les fichiers et les dossiers, à s...

{C / C++ / C++.NET} LISTER LES FICHIERS D'UN REPERTOIRE + FILTRES
Programmé sous Linux. Compatible windows. Liste les fichiers d'un répertoire come indiqué dans le...

{PHP} CLASSE DIRECTORYITERATOR POUR PHP4
Dans le cadre d'un de mes projets, j'utilise la classe PHP 5 DirectoryIterator vraiment utile pour l...

{Visual Basic, VB6, VB.NET, VB 2005} MODIFICATIONS NOM DE FICHIERS DANS UN MÊME RÉPERTOIRE
C'est un tout petit code tout simple mais qui est pratique si on veut modifier rapidement les noms d...

{Visual Basic, VB6, VB.NET, VB 2005} LISTEUR DE FICHIER - SIMPLE MAIS PRATIQUE
Vous copiez l'exe dans un répertoire, vous le lancez et il génère la liste de tous les fichiers & ré...

{Visual Basic, VB6, VB.NET, VB 2005} LISTE LES FICHIERS D'UN DOSSIER (AVEC SOUS DOSSIERS ET SOUS SOUS DOSSIERS , ETC)
J'ai fait une recherche sur VbFrance et je me suis apercu que toutes les sources faisait une liste d...

{Visual Basic, VB6, VB.NET, VB 2005} SCANLIST V2.1
Mon petit programme sert a scanner un repertoire et à faire une liste des sous dossiers et fichiers ...

{Visual Basic, VB6, VB.NET, VB 2005} BIBLIOTHÈQUE POUR ANALYSE ET RÉCUPÉRATION RÉCURSIVE DES FICHIERS
Ce code se compose de plusieurs parties : Scandir : Scan les dossiers et retourne les fichiers don...

{ASP / ASP.NET} ASP.NET - SAUVEGARDER DANS UN FICHIER XML LA LISTE DES FICHIERS PRÉSENTS DANS UN RÉPERTOIRE DONNÉ
Pour différents besoins, un fichier XML peut être nécessaire contenant la liste des fichiers dans un...

{ColdFusion} COPIE DE FICHIERS (CUSTOM TAG)
ce custom tag vous permet de copier tous les fichiers d'un répertoire vers un autre. ...