public static void ArcsDumpDirEntries(string dir, ArcsDatabase db) { bool skipflag = false; string[] shortnames = dir.Split('\\'); foreach (string shortname in shortnames) { if (shortname[0] == '!') { skipflag = true; } } if (skipflag) { return; // !で始まるディレクトリはスキップ } string[] tah_files = Directory.GetFiles(dir, "*.TAH"); foreach (string file in tah_files) { // 既にdb上にエントリがあるか調べる. //string tahid = db.GetTahID(file.Substring(arcspath.Length + 1)); ArcsTahEntry tah = db.GetTah(file.Substring(arcspath.Length + 1)); if (tah != null) { // 日付が一致するか? DateTime datetime = File.GetLastWriteTime(file); if (tah.datetime.ToString() == datetime.ToString()) { // 該当するエントリの存在フラグを立てる. TDCGExplorer.SetToolTips("Update " + Path.GetFileName(file)); db.UpdateTahExistUp(tah.id); continue; } else { // dbから一旦削除する. db.DeleteTah(tah.id); } } TDCGExplorer.LastAccessFile = file; using (FileStream source = File.OpenRead(file)) { ArcsDumpTAHEntries(source, db, file); } } string[] entries = Directory.GetDirectories(dir); foreach (string entry in entries) { ArcsDumpDirEntries(entry, db); } }