一个文件夹中的文件按修改时间排序的问题 ( 积分: 100 )

  • 主题发起人 主题发起人 1qaz2wsx
  • 开始时间 开始时间
1

1qaz2wsx

Unregistered / Unconfirmed
GUEST, unregistred user!
我的一个文件夹中有一万多个文件,并且天天都有更新,由于每隔一段时间要对这些文件做备份,往往人工做法是,先打开此文件夹,点击按修改时间排序,然后再打开备份文件夹,也按修改时间排序,找到备份文件夹中最新的一个文件,再将此文件以后时间的文件在文件夹中列出后拷贝到备份文件夹中,现在我想编个自动更新的程序,又不想采用遍历文件夹进行时间比对的方法,API中有没有函数可以找出一个文件夹中最新修改时间的文件,还有对文件夹中的文件按修改时间进行排序。
 
我的一个文件夹中有一万多个文件,并且天天都有更新,由于每隔一段时间要对这些文件做备份,往往人工做法是,先打开此文件夹,点击按修改时间排序,然后再打开备份文件夹,也按修改时间排序,找到备份文件夹中最新的一个文件,再将此文件以后时间的文件在文件夹中列出后拷贝到备份文件夹中,现在我想编个自动更新的程序,又不想采用遍历文件夹进行时间比对的方法,API中有没有函数可以找出一个文件夹中最新修改时间的文件,还有对文件夹中的文件按修改时间进行排序。
 
function GetFileTimes(const FileName: string; var Created: TDateTime;<br>var Accessed: TDateTime; var Modified: TDateTime): Boolean;<br>var<br> &nbsp;h: THandle;<br> &nbsp;Info1, Info2, Info3: TFileTime;<br> &nbsp;SysTimeStruct: SYSTEMTIME;<br> &nbsp;TimeZoneInfo: TTimeZoneInformation;<br> &nbsp;Bias: Double;<br>begin<br> &nbsp;Result := False;<br> &nbsp;Bias &nbsp; := 0;<br> &nbsp;h &nbsp; &nbsp; &nbsp;:= FileOpen(FileName, fmOpenRead or fmShareDenyNone);<br> &nbsp;if h &amp;gt; 0 then <br> &nbsp;begin<br> &nbsp; &nbsp;try<br> &nbsp; &nbsp; &nbsp;if GetTimeZoneInformation(TimeZoneInfo) &amp;lt;&amp;gt; $FFFFFFFF then<br> &nbsp; &nbsp; &nbsp; &nbsp;Bias := TimeZoneInfo.Bias / 1440; // 60x24<br> &nbsp; &nbsp; &nbsp;GetFileTime(h, @Info1, @Info2, @Info3);<br> &nbsp; &nbsp; &nbsp;if FileTimeToSystemTime(Info1, SysTimeStruct) then<br> &nbsp; &nbsp; &nbsp; &nbsp;Created := SystemTimeToDateTime(SysTimeStruct) - Bias;<br> &nbsp; &nbsp; &nbsp;if FileTimeToSystemTime(Info2, SysTimeStruct) then<br> &nbsp; &nbsp; &nbsp; &nbsp;Accessed := SystemTimeToDateTime(SysTimeStruct) - Bias;<br> &nbsp; &nbsp; &nbsp;if FileTimeToSystemTime(Info3, SysTimeStruct) then<br> &nbsp; &nbsp; &nbsp; &nbsp;Modified := SystemTimeToDateTime(SysTimeStruct) - Bias;<br> &nbsp; &nbsp; &nbsp;Result := True;<br> &nbsp; &nbsp;finally<br> &nbsp; &nbsp; &nbsp;FileClose(h);<br> &nbsp; &nbsp;end;<br> &nbsp;end;<br>end;<br><br><br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br> &nbsp;Date1, Date2, Date3: TDateTime;<br>begin<br> &nbsp;if GetFileTimes(Edit1.Text, Date1, Date2, Date3) then <br> &nbsp;begin<br> &nbsp; &nbsp;ShowMessage('Created: ' + DateTimeToStr(Date1)); &nbsp; &nbsp; &nbsp; //创建日期<br> &nbsp; &nbsp;ShowMessage('Last Accessed: ' + DateTimeToStr(Date2)); //最后访问日期<br> &nbsp; &nbsp;ShowMessage('Last Modified: ' + DateTimeToStr(Date3)); //最后访修改日期<br> &nbsp;end;<br>end; &nbsp;<br>
 
后退
顶部