怎么获取一个路径下某个文件的属性(例如获取E:\test.mp3的大小,创建日期,属性,最后修改时间)
    还有:是不是filesize函数不能获取文本文件的大小(而且这个函数获取文件大小时必须先打开文件)

解决方案 »

  1.   

    列举C:\Scripts\Adsi.vbs 的属性內容。strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colFiles = objWMIService.ExecQuery _
        ("Select * from CIM_Datafile Where name = 'c:\\Scripts\\Adsi.vbs'")
    For Each objFile in colFiles
        Wscript.Echo "Access mask: " & objFile.AccessMask
        Wscript.Echo "Archive: " & objFile.Archive
        Wscript.Echo "Compressed: " & objFile.Compressed
        Wscript.Echo "Compression method: " & objFile.CompressionMethod
        Wscript.Echo "Creation date: " & objFile.CreationDate
        Wscript.Echo "Computer system name: " & objFile.CSName
        Wscript.Echo "Drive: " & objFile.Drive
        Wscript.Echo "8.3 file name: " & objFile.EightDotThreeFileName
        Wscript.Echo "Encrypted: " & objFile.Encrypted
        Wscript.Echo "Encryption method: " & objFile.EncryptionMethod
        Wscript.Echo "Extension: " & objFile.Extension
        Wscript.Echo "File name: " & objFile.FileName
        Wscript.Echo "File size: " & objFile.FileSize
        Wscript.Echo "File type: " & objFile.FileType
        Wscript.Echo "File system name: " & objFile.FSName
        Wscript.Echo "Hidden: " & objFile.Hidden
        Wscript.Echo "Last accessed: " & objFile.LastAccessed
        Wscript.Echo "Last modified: " & objFile.LastModified
        Wscript.Echo "Manufacturer: " & objFile.Manufacturer
        Wscript.Echo "Name: " & objFile.Name
        Wscript.Echo "Path: " & objFile.Path
        Wscript.Echo "Readable: " & objFile.Readable
        Wscript.Echo "System: " & objFile.System
        Wscript.Echo "Version: " & objFile.Version
        Wscript.Echo "Writeable: " & objFile.Writeable
    Next
      

  2.   

    利用Delphi中的FindFirst函数可以得到一个文件的属性记录,该记录中的FindData域中就记载了详细的文件信息
      

  3.   

    ◆[DELPHI]处理文件属性
    attr:=filegetattr(filelistbox1.filename);
    if (attr and faReadonly)=faReadonly then ... //只读
    if (attr and faSysfile)=faSysfile then ... //系统
    if (attr and faArchive)=faArchive then ... //存档
    if (attr and faHidden)=faHidden then ... //隐藏 
      

  4.   

    操作系统:WIN2000 SERVER 
        工具:DELPHI 6.0 
        问题: 
        假如某一个目录下有几个文件,例如(工人工资2003年12月已经发.abc 领导工资2003年12月未发.abc 流氓工资2003年12月核定.abc)三个文件,而我要对三个都进行操作,操作的依据是时间等于2003年12月,在这里面除了字符串2003年12月和后缀名 .abc是固定的外,其它都是不一定的,请问,在程序中,如何获取这三个文件名?在 DELPHI 6 中,获取文件的函数又是哪个?谢谢(林立峰)  
        
         可以使用FindFirst和FindNext函数查找文件,如: 
        begin 
         Found := FindFirst("c:\dir\*2003年12月*.abc", Attr, SearchRec); 
         while Found = 0 do 
         begin 
         ProcessSearchRec(SearchRec); 
         Found := FindNext(SearchRec); 
         end; 
         FindClose(SearchRec); 
        end; 
         
         
        TSearchRec类型定义如下: 
         type 
         TSearchRec = record 
         Time : Integer; 
         Size : Integer; 
         Attr : Integer; 
         Name : TFileName; 
         ExcludeAttr : Integer; 
         FindHandle : THandle; 
         FindData : TWin32FindData; 
         end; 
         
        当利用FindFirst和FindNext函数找到一个文件后,利用这个类型可以获得文件的属性、大小和修改时间等信息。  
      

  5.   

    procedure TfrmFileTime.Button1Click(Sender: TObject);
    var
     tmpStr:string;
    begin
     if OpenDialog1.Execute then
      tmpStr:=OpenDialog1.FileName;
     Memo2.Text:='文件名:'+tmpStr;
     Memo2.Lines.Append('文件创建时间:'+DateTimeToStr(FGetFileTime(tmpStr,0)));
     Memo2.Lines.Append('文件修改时间:'+DateTimeToStr(FGetFileTime(tmpStr,1)));
     Memo2.Lines.Append('文件最后访问时间:'+DateTimeToStr(FGetFileTime(tmpStr,2)));
    end;function TfrmFileTime.FGetFileTime(sFileName: string;
      TimeType: integer): TDateTime;
    var
     ffd:TWin32FindData;
     dft:DWord;
     lft,Time:TFileTime;
     h:THandle;
    begin
     h:=FindFirstFile(Pchar(sFileName),ffd);
     case TimeType of
      0:Time:=ffd.ftCreationTime;
      1:Time:=ffd.ftLastWriteTime;
      2:Time:=ffd.ftLastAccessTime;
     end; //case
     //获取文件信息
     if h<>INVALID_HANDLE_VALUE then
      begin
      //转换FILETIME格式为localFILETIME格式
      FileTimeToLocalFileTime(Time,lft);
      //localFILETIME转换为DOStime格式
      FileTimeToDosDateTime(lft,LongRec(dft).Hi,LongRec(dft).Lo);
      //转换DOStime格式为Delphi的TDateTime格式
      Result:=FileDateToDateTime(dft);
      end
     else
      result:=0;
    end;