[c#] trier le contenu d'un répertoire

Contenu du snippet

Tout est dans le titre ;p
Cela permet de réinventer la poudre, cad, un browser de répertoires

Source / Exemple :


class IFileSystemCompareBySize: IComparer
{
public int Compare(object _Info1, object _Info2) 
{
// Only FILES
FileInfo fileInfo1 = _Info1 as FileInfo;
FileInfo fileInfo2 = _Info2 as FileInfo;
long fileSize1 = fileInfo1 == null? -1: fileInfo1.Length;
long fileSize2 = fileInfo2 == null? -1: fileInfo2.Length;
if (fileSize1 > fileSize2) return 1;
if (fileSize1 < fileSize2) return -1;
return 0;
}
}

class IFileSystemCompareByName: IComparer
{
public int Compare(object _Info1, object _Info2) 
{
FileSystemInfo fileInfo1 = _Info1 as FileSystemInfo;
FileSystemInfo fileInfo2 = _Info2 as FileSystemInfo;

return (fileInfo1.Name.CompareTo ( fileInfo2.Name));
}
}

public static FileInfo[] SortFilesByName(FileInfo[] _aFileInfo)
{
FileInfo[] aInfos = _aFileInfo;
IComparer sizeComparer = new IFileSystemCompareByName();
Array.Sort(aInfos, sizeComparer);
return aInfos;
}

public static DirectoryInfo[] SortDirectoriesByName(DirectoryInfo[] _aDirectoryInfo)
{
DirectoryInfo[] aInfos = _aDirectoryInfo;
IComparer sizeComparer = new IFileSystemCompareByName();
Array.Sort(aInfos, sizeComparer);
return aInfos;
}

Conclusion :


Voila un exemple d'utilisation avec tri par Nom (par taille il suffit d'appeler SortFilesBySize() pour les fichiers ;p)

string oPath = "c:\\";
DirectoryInfo Parent = new DirectoryInfo(oPath);

// Parse directories
DirectoryInfo[] aDirInfos = SortDirectoriesByName (Parent.GetDirectories());
foreach(DirectoryInfo NextFolder in aDirInfos)
{
// Manage NextFolder.Name;
}

// Parse files
FileInfo[] aInfos = SortFilesByName (Parent.GetFiles());
foreach(FileInfo NextFile in aInfos) // Parent.GetFiles())
{
// Manage NextFile.Name
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.