騎空士ときどきプログラマーな日記

グラブルで頑張る騎空士の日常を綴ります。

【C#】最新日付のファイルを取得

C#】最新日付のファイルを取得

最新のファイルを取得したかったので、忘れないようにメモします

  • 静的クラスにしちゃいます
    public static class FileLasttime
    {
        /// <summary>
        /// 最新ファイルを取得します
        /// </summary>
        /// <param name="path">フォルダのパス</param>
        /// <param name="filename">検索対象のファイル名</param>
        /// <returns></returns>
        public static string GetfNewWriteFile(string path, string filename)
        {
            string str_return = "";
            DirectoryInfo di = new DirectoryInfo(path);

            // "filename"に該当するファイル名を取得
            FileInfo[] finfos = di.GetFiles(filename);

            if (finfos.Length != 0)
            {
                // ファイル名とファイルの更新日時を格納するハッシュテーブルを作成します
                Dictionary<string, DateTime> lasttimes = new Dictionary<string, DateTime>();

                // "FileSystemInfo.LastWriteTime"を使用することで更新日時を取得
                foreach (var fi in finfos)
                {
                    lasttimes.Add(fi.Name, fi.LastWriteTime);
                }

                bool first = true;
                DateTime dt = DateTime.Now;

                // 比較
                foreach (var lt in lasttimes)
                {
                    if(first)
                    {
                        dt = lt.Value;
                        str_return = lt.Key;
                        first = false;
                    }

                    // ”CompareTo”で比較
                    switch (dt.CompareTo(lt.Value))
                    {
                        case -1:
                            Console.WriteLine(dt.ToString() + "は" + lt.Value.ToString() + "よりも古いです");
                            str_return = lt.Key;
                            dt = lt.Value;
                            break;
                        case 0:
                            Console.WriteLine(dt.ToString() + "は" + lt.Value.ToString() + "と同じです");
                            break;
                        case 1:
                            Console.WriteLine(dt.ToString() + "は" + lt.Value.ToString() + "よりも新しいです");
                            break;
                        default:
                            Console.WriteLine("想定外の値が挿入されました");
                            break;
                    }
                }
            }
            else
            {
                return str_return;
            }
            return str_return;
        }

    }

かなり雑な作りだけど大体こんな感じです。(汗
この例だと検索パターンに該当するファイル名のうちから最新のモノがリターンするようになってます。
以上!!