如何判断一个目录下的文件(图片)是否被替换?

Description of your first forum.

如何判断一个目录下的文件(图片)是否被替换?

帖子Herb » 星期二, 2003年7月29日 20:51


问题如题:
例如:D:\Photo目录下有很多图片,如何判断从现在开始,有哪些文件被用户用同名文件替换,有哪些文件被新增,有哪些文件被删除。
问题解决,另外给分。谢谢!
 
 
 

如何判断一个目录下的文件(图片)是否被替换?

帖子plzw » 星期三, 2003年7月30日 08:39


我觉得应该是得到文件的时间信息,然后处理。
 
 
 

如何判断一个目录下的文件(图片)是否被替换?

帖子Herb » 星期三, 2003年7月30日 08:56


难道一定要先纪录所有的文件信息,然后进行比较,才可以判断吗?如果目录下的文件太多了,岂不是很浪费时间?
有没有更好的方法?
 
 
 

如何判断一个目录下的文件(图片)是否被替换?

帖子zjan521 » 星期三, 2003年7月30日 18:58


有比较才会有变化,你不保存信息怎么比较?
或者你可以定义一个时间,创建和修改时间都在此之前的是你已经料理过的文件
然后枚举每个文件,比较
创建时间>TimePoint(新创建)
修改时间>TimePoint(修改过)
删除就没办法,只能事先记录信息
建议采用复合文档或者INI保存在该目录下面,每次检索时更新该文件就好了,
如果是实时监测,可以参考ShellChangeNotity
 
 
 

如何判断一个目录下的文件(图片)是否被替换?

帖子Herb » 星期三, 2003年7月30日 19:21


To zjan521:
thanks,可否说说ShellChangeNotity  
 
 
 

如何判断一个目录下的文件(图片)是否被替换?

帖子ffanpeng » 星期一, 2003年8月4日 16:45


能不能每次进入都进行扫描,将文件信息与以前的保存结果进行对比,将发生变化的
记录改变,
 
 
 

如何判断一个目录下的文件(图片)是否被替换?

帖子52free » 星期二, 2003年8月5日 19:09


给出一点比较文件信息的代码
function CovFileDate(Fd:_FileTime):TDateTime;
var
   Tct:_SystemTime;
   Temp:_FileTime;
begin
   FileTimeToLocalFileTime(Fd,Temp);
   FileTimeToSystemTime(Temp,Tct);
   CovFileDate:=SystemTimeToDateTime(Tct);
end;

function GetFileTime(const Tf:string):string;
{ 获取文件时间,Tf表示目标文件路径和名称 }
const
 Model='YYYY-MM-DD'; { 设定时间格式 }
var
 Tp:TSearchRec; { 申明Tp为一个查找记录 }
 T1,T2,T3:string;
begin
 FindFirst(Tf,faAnyFile,Tp); { 查找目标文件 }
 T1:=FormatDateTime(Model,CovFileDate(Tp.FindData.ftCreationTime));
 FindClose(Tp);
 { 返回文件的创建时间 }
 result:=t1;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
   TodayDate,FileDate,Spath:string;
begin
   Spath:=extractfilepath(application.ExeName);
   {拷贝诊疗项目表}
   if Not FileExists (Spath+'zlxm.dbf') then
      CopyFile('\\192.168.1.1\data1\zlxm.dbf',pchar(Spath+'zlxm.dbf'),False);
   {else为判断诊疗项目表是否是今天的时间,如果是则不拷贝,因为一天之内价格变动不大}
   else
      begin
        TodayDate:=FormatDateTime('YYYY-MM-DD',Date);
        FileDate:=GetFileTime(Spath+'zlxm.dbf');
        if FileDate<>TodayDate then
           CopyFile('\\192.168.1.1\data1\zlxm.dbf',pchar(Spath+'zlxm.dbf'),False);
      end;

   {拷贝药品字典表}
   if Not FileExists(Spath+'ypzdsj.dbf') then
      CopyFile('\\192.168.1.1\data1\ypzdsj.dbf',pchar(Spath+'ypzdsj.dbf'),False);
   else
      begin
        TodayDate:=FormatDateTime('YYYY-MM-DD',Date);
        FileDate:=GetFileTime(Spath+'ypzdsj.dbf');
        if FileDate<>TodayDate then
           CopyFile('\\192.168.1.1\data1\ypzdsj.dbf',pchar(Spath+'ypzdsj.dbf'),False);
      end;  
   xmtable.Open;
end;
 
 
 

如何判断一个目录下的文件(图片)是否被替换?

帖子爱元元的哥哥 » 星期二, 2003年8月5日 19:22


用文件过滤驱动