无聊地写了个小程序,统计硬盘上最古老的文件,D盘下有一堆MP3,以前从地摊光盘上拷下来的,最后修改时间都是诡异的1990年,严重干扰结果, 于是只统计了C盘,貌似都是Office的货,估计都是写资源文件,把数量放宽到100个,还是都是Office的货。好吧,Office卖那么贵是有道 理的。
Result:
C:/Program Files/Common Files/microsoft shared/PROOF/MSWDS_EN.LEX
1996/1/4 10:56:24
C:/Windows/System32/VEN2232.OLB
1996/12/3 14:50:14
C:/Program Files/Microsoft Office/MEDIA/CAGCAT10/J0230876.WMF
1997/6/27 20:25:30
C:/Program Files/Microsoft Office/Office14/BORDERS/MSART1.BDR
1997/7/11 0:00:00
C:/Program Files/Microsoft Office/Office14/BORDERS/MSART10.BDR
1997/7/11 0:00:00
C:/Program Files/Microsoft Office/Office14/BORDERS/MSART11.BDR
1997/7/11 0:00:00
C:/Program Files/Microsoft Office/Office14/BORDERS/MSART12.BDR
1997/7/11 0:00:00
C:/Program Files/Microsoft Office/Office14/BORDERS/MSART13.BDR
1997/7/11 0:00:00
C:/Program Files/Microsoft Office/Office14/BORDERS/MSART14.BDR
1997/7/11 0:00:00
C:/Program Files/Microsoft Office/Office14/BORDERS/MSART15.BDR
1997/7/11 0:00:00
资源文件啥的太没意思的,把文件类型限定为exe或者dll,结果如下,年轻了好多啊。
Result:
C:/Program Files/Common Files/microsoft shared/EQUATION/EQNEDT32.EXE
2000/11/9 13:41:14
C:/Program Files/Common Files/InstallShield/Engine/6/Intel 32/objectps.dll
2001/9/5 21:13:42
C:/Program Files/Common Files/InstallShield/Engine/6/Intel 32/iuser.dll
2001/9/5 21:14:42
C:/Program Files/Common Files/InstallShield/Engine/6/Intel 32/ctor.dll
2001/9/5 21:18:52
C:/Program Files/Common Files/InstallShield/IScript/iscript.dll
2001/9/6 14:18:34
C:/Program Files/Lenovo/HOTKEY/msvcr71.dll
2003/2/21 21:42:22
C:/Program Files/Lenovo/HOTKEY/msvcp71.dll
2003/3/19 13:14:50
C:/Program Files/Common Files/microsoft shared/TRANSLAT/MSB1EALR.DLL
2003/4/18 1:57:04
C:/Program Files/Common Files/InstallShield/Professional/RunTime/Objectps.dll
2003/11/10 18:10:06
C:/Program Files/Common Files/InstallShield/Professional/RunTime/09/01/Intel32/DotNetInstaller.exe
2003/11/10 18:11:58
代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections.Specialized; using System.IO; namespace OldestFile { class Program { static private List<Record> oldest = new List<Record>(); static void Main(string[] args) { DriveInfo[] disk = DriveInfo.GetDrives(); foreach (DriveInfo di in disk) { //AccessAllFiles(di.Name); } AccessAllFiles(@"C:/"); Console.WriteLine(); Console.WriteLine("Result:"); for (int j = 0; j < oldest.Count; j++) { Console.WriteLine(oldest[j].fullName); Console.Write("/t"); Console.WriteLine(oldest[j].lastWriteTime); } Console.ReadKey(); } static private void AccessAllFiles(string parentDir) { try { string[] dir = Directory.GetDirectories(parentDir); System.Console.WriteLine(parentDir); for (int i = 0; i < dir.Length; i++) { AccessAllFiles(dir[i]); } string[] file = Directory.GetFiles(parentDir); for (int i = 0; i < file.Length; i++) { //System.Console.WriteLine(file[i]); FileInfo fi = new FileInfo(file[i]); if(fi.Extension != ".exe" && fi.Extension != ".Exe" && fi.Extension != ".EXE" && fi.Extension != ".dll" && fi.Extension != ".Dll" && fi.Extension != ".DLL") { continue; } if (oldest.Count == 0) { oldest.Add(new Record(fi.LastAccessTime, fi.FullName)); } else { for (int j = 0; j < oldest.Count; j++) { if (fi.LastWriteTime < oldest[j].lastWriteTime) { oldest.Insert(j, new Record(fi.LastWriteTime, fi.FullName)); break; } } if (oldest.Count > 10) { oldest.RemoveAt(oldest.Count - 1); } } } } catch { } } class Record { public DateTime lastWriteTime; public String fullName; public Record(DateTime time, String name) { lastWriteTime = time; fullName = name; } } } }