Directory.EnumerateFiles
方法的默認讀取順序是什麼?它一致嗎?Directory.EnumerateFiles讀取順序(C#)
根據我的經驗,迄今爲止似乎是創建文件的日期,但我一直未能找到確認。
我想問的原因是因爲我正在處理的程序的一部分將二進制文件從目錄加載到對象中,然後將這些對象加載到數組中。這些對象通過索引數組相互引用,這意味着它們加載到數組中的順序需要保持一致(以避免索引轉換)。
雖然我在這裏,我還有一個小問題。當文件被刪除時,無論我做什麼,它都會明顯改變加載到數組中的文件的索引。有什麼建議可以避免這個問題?由於擔心存儲問題,我避免使用字典(如果我可以避免的話,不用存儲文本鍵的數組),但如果它是唯一可行的方法,那麼我可能必須實現它。
編輯:從你的答案極好的提示後,我已經重構使用文件名的字典方法。性能影響相當可忽略,可讀性和可維護性都大大提高,因此工作得很好。
爲什麼不只是保留一個引用而不是索引?如果你這樣做,你不必擔心索引被洗牌。 – casperOne
由於文件序列化的工作方式。如果我要通過序列化保存包含引用的文件,然後加載這些文件,每次都會加載整個對象樹,導致大量複製。例如,如果汽車引用輪胎和卡車引用輪胎,並且他們都被保存然後加載,我會有2個重複的輪胎實例。 – Djentleman
來自[MSDN](http://msdn.microsoft.com/en-us/library/07wt70x2.aspx),關於'GetFiles'(本質上調用'EnumerateFiles'):*返回的文件名的順序是不保證;如果需要特定的排序順序,請使用Sort()方法。*我建議您,如文檔所述,使用您自己的排序方法。 – Mir