如何时时监控一个目录的大小??

解决方案 »

  1.   

    要用到
    FindFirstChangeNotification 
    FindNextChangeNotification 
    FindCloseChangeNotification
      

  2.   

    得到目录大小 
    function TFileBrowser.DirSize(Dir:string):integer; 
      var 
      SearchRec : TSearchRec; 
      Separator : string; begin 
      if Copy(Dir,Length(Dir),1)='\' then 
        Separator := '' 
      else 
        Separator := '\'; 
      if FindFirst(Dir+Separator+'*.*',faAnyFile,SearchRec) = 0 then 
      begin 
        if FileExists(Dir+Separator+SearchRec.name) then 
        begin 
          DirBytes := DirBytes + SearchRec.Size; 
          {Memo1.Lines.Add(Dir+Separator+SearchRec.Name);} 
        end 
        else 
          if DirectoryExists(Dir+Separator+SearchRec.name) then 
          begin 
            if (SearchRec.name<>'.') and (SearchRec.name<>'..') then 
              DirSize(Dir+Separator+SearchRec.name); 
          end; 
        end; 
        while FindNext(SearchRec) = 0 do 
        begin 
          if FileExists(Dir+Separator+SearchRec.name) then 
          begin 
            DirBytes := DirBytes + SearchRec.Size; 
            {Memo1.Lines.Add(Dir+Separator+SearchRec.Name);} 
          end 
          else 
            if DirectoryExists(Dir+Separator+SearchRec.name) then 
            begin 
              if (SearchRec.name<>'.') and (SearchRec.name<>'..') then 
                DirSize(Dir+Separator+SearchRec.name); 
            end; 
          end; 
        end; 
      end; 
      FindClose(SearchRec); 
    end;