2009-09-14 7 views
0

Comment trouver le numéro de commande de fichier à partir du dossier. Mes fichiers d'image sont stockés dans le dossier IMAGE en augmentant oder.Numéro de commande de fichier image

Par exemple,

IMGA IMGB IMGC IMGD

je veux savoir

IMGA est 1, IMGB est 2 IMGC 3

Comment obtenir les numéros d'ordre croissant selon le nom de fichier.?

+0

En fait, pas vrai. En général, les dossiers stockent des ensembles de fichiers et l'ordre est aléatoire. Mais lors de la lecture du contenu du dossier, le système d'exploitation vous présentera souvent les données dans un ordre prédéterminé. Tout ce que vous avez fait est de donner des noms de fichiers ascendants à vos fichiers. –

Répondre

0

Vous pouvez le faire en utilisant le DirectoryInfo pour obtenir tout le nom du fichier, puis obtenir l'index de fichiers

public static int SortFileNames(string yourDirectory, string selectedFile) 
    { 
    DirectoryInfo directory = new DirectoryInfo(yourDirectory); 
    FileInfo[] files =directory.GetFiles(); 
    return GetFileIndex(files, selectedFile); 
    } 

    private static int GetFileIndex(FileInfo[] files, string selectedFile) 
    { 
    for(int i=0; i< files.length; i++) 
    { 
     if(files[i].Name== selectedFile) 
      return i; 
    } 
    return -1; 
    } 
+0

Mon fichier ne commence pas seulement à partir de img *. je serai différent. Si différents moyens, comment puis-je affiner le numéro de commande de fileNames dans le dossier. – nithi

+0

Je ne comprends pas très bien ce que vous dites. – Graviton

+0

Comment trouver le numéro de commande de fichier à partir du dossier. Mes fichiers d'image sont stockés dans le dossier IMAGE en augmentant oder. Par exemple, IMGA IMGB IMGC IMGD Je veux savoir IMGA est 1, 2 IMGB est IMGC 3 Comment obtenir les numéros d'ordre croissant selon le nom de fichier.? – nithi

0

Cela devrait fonctionner:

var imagesIndexes = Directory.GetFiles(directoryPath, "*.jpg") 
        .Select(fullPath => Path.GetFileName(fullPath) 
        .OrderBy(fileName => fileName) 
        .Select((fileName, index) => new {FileName = fileName, Index = index}) 
        .ToDictionary(item => item.FileName, item => item.Index); 


int indexOfFoo = imagesIndexes["Foo.jpg"]; 
int indexOfBar = imagesIndexes["Bar.jpg"]; 

Ou, un peu plus simple:

var images = Directory.GetFiles(directoryPath, "*.jpg") 
      .Select(fullPath => Path.GetFileName(fullPath) 
      .OrderBy(fileName => fileName); 


int indexOfFoo = images.IndexOf("Foo.jpg"); 
int indexOfBar = images.IndexOf("Bar.jpg"); 
Questions connexes