2012-10-05 75 views
0

所以我下面的代碼行如何組織DirectoryInfo.GetFiles()

Dim di As New IO.DirectoryInfo(path) 
    Dim diar1 As IO.FileInfo() = di.GetFiles("*." & filetype) 

是否有可能具備的要素,根據有文件名,它現在組織文件的方式預先安排,是有幾個號碼以錯誤的順序出現。我問這個,因爲我基本上確定一個目錄中是否缺少文件。我通過從另一個文件中減去一個文件名來確定這一點。文件名的例子是1.0001.tif 1.0002.tif 2.0001.tif等等。整個確定文件ID號和小數點是文檔的頁碼

+0

您可以使用LINQ來訂購文件(或者簡單的'diar1.Sort()')。如果你想給我們更多的信息,我們可以給你一個例子。什麼是'filetype'? –

+0

.sort()完全是我所尋找的不能相信的我錯過了那麼多的感謝 –

回答

0

您可以使用LINQ訂購您的文件:

var tifs = Directory.EnumerateFiles(path, "*.tif", SearchOption.TopDirectoryOnly) 
    .Select(fn => new { fn, name = Path.GetFileNameWithoutExtension(fn) }) 
    .Select(x => new 
    { 
     x.fn, 
     x.name, 
     major = int.Parse(x.name.Split('.')[0]), 
     minor = int.Parse(x.name.Split('.')[1]) 
    }) 
    .OrderBy(x => x.major).ThenBy(x => x.minor); 

請注意,您需要添加using System.Linq並認爲這是尚未故障安全。它需要文件始終具有此格式,否則將丟棄int.Parse(您可以使用int.TryParse)。

您可以使用foreach枚舉結果:

foreach(var x in tifs) 
    Console.WriteLine("File:{0}", x.fn); 

編輯:但你也可以簡單地使用diar1.Sort()(在我的評論中提到),如果你只是想字母順序排序。