none
請問foreach找檔案時,是以什麼為排序依據? RRS feed

  • 問題

  • 我有個foreach迴圈要將某個資料夾中所有的.txt找出,想問說foreach找檔案時是以什麼做為排序的依據,如果我想依修改日期做為排序依據的話,又該怎麼做呢?
    2010年9月10日 上午 06:16

解答

  • Hi!

    1. foreach 是按照陣列或集合的 index 一個個抓出項目

    2. 您是怎麼抓檔案的,是用 DirectoryInfo.GetFiles 嗎? 我記得是以檔名做排序

    3. 參考此文看看 Directory.GetFiles() in Modified Date/Time Order

        // using System.IO;
        // using System.Collections;
        private void button1_Click(object sender, EventArgs e)
        {
          DirectoryInfo dirinfo = default(DirectoryInfo);
          FileInfo[] allFiles = null;
    
          dirinfo = new DirectoryInfo(@"C:\資料夾名稱\");
          allFiles = dirinfo.GetFiles("*.txt");
          Array.Sort(allFiles, new clsCompareFileInfo());
          foreach (FileInfo fl in allFiles)
          {
            MessageBox.Show(fl.FullName.ToString() + ", " + fl.LastWriteTime.ToString());
          }
        }
    
        public class clsCompareFileInfo : IComparer
        {
          int IComparer.Compare(object x, object y)
          {
            FileInfo File1 = null;
            FileInfo File2 = null;
            File1 = (FileInfo)x;
            File2 = (FileInfo)y;
            return DateTime.Compare(File1.LastWriteTime, File2.LastWriteTime);
          }
        }

    歡迎參觀我的Blog.NET菜鳥自救會
    • 已提議為解答 DK. Da 2010年9月10日 上午 09:52
    • 已標示為解答 天狼星人 2010年9月11日 下午 04:58
    2010年9月10日 上午 06:42
    版主