如何访问一个文件的创建、修改时间、文件属性

FSO   对象模型编程  
   
   
    FSO   对象模型编程包括三项主要任务:    
   
  使用CreateObject   方法,或将一个变量声明为   FileSystemObject   对象类型来创建一个   FileSystemObject   对象。  
   
   
  对新创建的对象使用适当的方法。  
   
   
  访问该对象的属性。    
  FSO   对象模型包含在一个称为   Scripting   的类型库中,此类型库位于   Scrrun.Dll   文件中。如果还没有引用此文件,请从“属性”菜单的“引用”对话框选择“Microsoft   Scripting   Runtime”项。然后就可以使用“对象浏览器”来查看其对象、集合、属性、方法、事件以及它的常数。  
   
  创建   FileSystemObject   对象  
  第一步是创建一个   FileSystemObject   对象以便进行处理。可以通过如下两种方法完成:    
   
  将一个变量声明为   FileSystemObject   对象类型:    
  Dim   fso   As   New   FileSystemObject  
   
  使用   CreateObject   方法来创建一个   FileSystemObject   对象:    
  Set   fso   =   CreateObject("Scripting.FileSystemObject")  
   
  在上面的语法中,   Scripting   是类型库的名称,而   FileSystemObject   则是想要创建一个实例的对象的名称。  
   
  注意   第一种方法只在   Visual   Basic   中有效,而第二种方法在   Visual   Basic   或   VBScript   中都是可行的。  
   
  使用适当的方法  
  下一步就是使用该   FileSystemObject   对象的适当的方法。例如,如果想要创建一个新对象,既可以使用   CreateFolder   方法也可以使用   CreateTextFile   方法。(FSO   对象模型不支持创建或删除驱动器。)  
   
  如果想要删除对象,可以使用   FileSystemObject   对象的   DeleteFile   和   DeleteFolder   方法,或者   File   和   Folder   对象的   Delete   方法。  
   
  使用适当的方法,还可以复制、移动文件和文件夹。  
   
  请注意,   FileSystemObject   对象模型中有一些功能是冗余的。例如,要复制一个文件,既可以使用   FileSystemObject   对象的   CopyFile   方法,也可以使用   File   对象的   Copy   方法。这两者的功能是完全相同的。两者同时存在以提供最大的编程灵活性。  
   
  访问已有的驱动器、文件和文件夹  
  要访问一个已有的驱动器、文件或文件夹,请使用   FileSystemObject   对象中相应的   "get"   方法:    
   
  GetDrive    
   
   
  GetFolder  
   
   
  GetFile    
  例如:  
   
  Dim   fso   As   New   FileSystemObject,   fil   As   File  
  Set   fil   =   fso.GetFile("c:/test.txt")  
   
  但是,请注意,并不需要对新创建的对象使用"get"   方法,因为"create"   函数已经返回了一个句柄到新创建的对象。例如,如果使用   CreateFolder   方法创建了一个新的文件夹,就没有必要使用   GetFolder   方法来访问该对象的诸如名称、路径、大小等属性。只要给   CreateFolder   函数设置一个变量来获取新建文件夹的句柄,然后就可以访问其属性、方法和事件:  
   
  Private   Sub   Create_Folder()  
        Dim   fso   As   New   FileSystemObject,   fldr   As   Folder  
        Set   fldr   =   fso.CreateFolder("C:/MyTest")  
        MsgBox   "Created   folder:   "   &   fldr.Name  
  End   Sub  
  访问对象的属性  
  一旦有了对象的句柄,就能够访问其属性。例如,假定您想要获得一个特定文件夹的名称。首先要创建该对象的一个实例,然后通过适当的方法(在本例中是   GetFolder   方法,因为该文件夹已经存在)得到其句柄:  
   
  Set   fldr   =   fso.GetFolder("c:/")  
   
  现在有了一个   Folder   对象的句柄,您可以查看其   Name   属性:  
   
  Debug.Print   "Folder   name   is:   ";   fldr.Name  
   
  如果想要找出一个文件的最新修改时间,可以使用如下的语法:  
   
  Dim   fso   As   New   FileSystemObject,   fil   As   File  
  Set   fil   =   fso.GetFile("c:/detlog.txt")     '   获得要查询的   File   对象。  
  Debug.Print   "File   last   modified:   ";   fil.DateLastModified   '   显示信息。
Top

2 楼tomid(磨牙狼)回复于 2002-07-01 21:09:48 得分 5API:  
  Long,非零表示成功,零表示失败。会设置GetLastError    
  ----------------------  
  GetFileTime    
   
  VB声明    
  Declare   Function   GetFileTime   Lib   "kernel32"   Alias   "GetFileTime"   (ByVal   hFile   As   Long,   lpCreationTime   As   FILETIME,   lpLastAccessTime   As   FILETIME,   lpLastWriteTime   As   FILETIME)   As   Long    
  说明    
  取得指定文件的时间信息    
  参数   类型及说明    
  hFile   Long,文件的句柄    
  lpCreationTime   FILETIME,用于装载文件的创建时间    
  lpLastAccessTime   FILETIME,用于装载文件上一次访问的时间(FAT文件系统不支持这一特性)    
  lpLastWriteTime   FILETIME,用于装载文件上一次修改的时间    
   
  ----------------------  
  GetFileAttributes    
   
  VB声明    
  Declare   Function   GetFileAttributes   Lib   "kernel32"   Alias   "GetFileAttributesA"   (ByVal   lpFileName   As   String)   As   Long    
  说明    
  判断指定文件的属性    
  -----------------  
  GetFileSize    
   
  VB声明    
  Declare   Function   GetFileSize   Lib   "kernel32"   Alias   "GetFileSize"   (ByVal   hFile   As   Long,   lpFileSizeHigh   As   Long)   As   Long    
  说明    
  判断文件长度    
  参数   类型及说明    
  hFile   Long,文件的句柄    
  lpFileSizeHigh   Long,指定一个长整数,用于装载一个64位文件长度的头32位。如这个长度没有超过2^32字节,则该参数可以设为NULL(变成ByVal)    
 
Top

3 楼wwfang(晴天)回复于 2002-07-01 22:15:31 得分 5以下是我写的   DLL   中的文件操作的一部分代码,希望对你有所帮助:  
   
  Option   Explicit  
   
  '获得文件时间信息  
  Private   Declare   Function   GetFileTime   Lib   "kernel32"   (ByVal   hFile   As   Long,   lpCreationTime   As   FileTime,   lpLastAccessTime   As   FileTime,   lpLastWriteTime   As   FileTime)   As   Long  
  '设置文件时间信息  
  Private   Declare   Function   SetFileTime   Lib   "kernel32"   (ByVal   hFile   As   Long,   lpCreationTime   As   FileTime,   lpLastAccessTime   As   FileTime,   lpLastWriteTime   As   FileTime)   As   Long  
  '把文件的时间信息转换为系统时间格式  
  Private   Declare   Function   FileTimeToSystemTime   Lib   "kernel32"   (lpFileTime   As   FileTime,   lpSystemTime   As   SYSTEMTIME)   As   Long  
  '把文件的时间信息转换为本地时间格式  
  Private   Declare   Function   FileTimeToLocalFileTime   Lib   "kernel32"   (lpFileTime   As   FileTime,   lpLocalFileTime   As   FileTime)   As   Long  
  '把系统时间转换为文件时间  
  Private   Declare   Function   SystemTimeToFileTime   Lib   "kernel32"   (lpSystemTime   As   SYSTEMTIME,   lpFileTime   As   FileTime)   As   Long  
  '把本地时间转换为文件时间  
  Private   Declare   Function   LocalFileTimeToFileTime   Lib   "kernel32"   (lpLocalFileTime   As   FileTime,   lpFileTime   As   FileTime)   As   Long  
  '设置文件属性  
  Private   Declare   Function   SetFileAttributes   Lib   "kernel32"   Alias   "SetFileAttributesA"   (ByVal   lpFileName   As   String,   ByVal   dwFileAttributes   As   Long)   As   Long  
  Private   Const   FILE_ATTRIBUTE_READONLY   =   &H1   '  
  Private   Const   INVALID_HANDLE_VALUE   =   -1   '  
  '文件时间结构  
  Private   Type   FileTime  
                  dwLowDateTime   As   Long  
                  dwHighDateTime   As   Long  
  End   Type  
  '系统时间结构  
  Private   Type   SYSTEMTIME  
                  wYear   As   Integer  
                  wMonth   As   Integer  
                  wDayOfWeek   As   Integer  
                  wDay   As   Integer  
                  wHour   As   Integer  
                  wMinute   As   Integer  
                  wSecond   As   Integer  
                  wMilliseconds   As   Integer  
  End   Type  
   
  '自定义的文件时间信息常数列表  
  '日期:2002-6-16  
  Public   Enum   FileTimeConstants  
          [ftCreate]   =   0  
          [ftModify]   =   1  
          [ftAccess]   =   2  
  End   Enum  
   
  '获得指定日期所对应的星期  
  Private   Function   GetWeekDay(ByVal   dtDate   As   String)   As   String  
  dtDate   =   CDate(dtDate)   '把字符串型的时间转换成日期型  
  Dim   intWeek   As   Integer  
  intWeek   =   Weekday(dtDate)   '获得指定日期的星期  
  Select   Case   intWeek   '根据得到的星期获得相应的中文星期  
          Case   1  
                  GetWeekDay   =   "星期日"  
          Case   2  
                  GetWeekDay   =   "星期一"  
          Case   3  
                  GetWeekDay   =   "星期二"  
          Case   4  
                  GetWeekDay   =   "星期三"  
          Case   5  
                  GetWeekDay   =   "星期四"  
          Case   6  
                  GetWeekDay   =   "星期五"  
          Case   7  
                  GetWeekDay   =   "星期六"  
  End   Select  
  End   Function  
   
  '获得文件的时间信息  
  '日期:2002-6-16  
  Public   Function   GetFileTimes(ByVal   sFile   As   String,   FTime   As   FileTimeConstants,   Optional   IncludeTime   As   Boolean   =   True,   Optional   IncludeWeekday   As   Boolean   =   False)  
  On   Error   GoTo   ErrHandle  
   
  Dim   ftCreateTime   As   FileTime  
  Dim   ftModifyTime   As   FileTime  
  Dim   ftAccessTime   As   FileTime  
  Dim   ftLocal   As   FileTime  
  Dim   ftSystem   As   SYSTEMTIME  
  Dim   lngHandle   As   Long   '存放文件句柄  
  Dim   lngAttr   As   Long   '存放文件属性  
  Dim   blnSetAttr   As   Boolean   '存放设置文件属性的标记  
  Dim   lngResult   As   Long   '存放函数执行结果  
  Dim   FProperties   As   New   FileProperties  
  If   GetAttr(sFile)   And   vbReadOnly   Then   '如果文件具有“只读”属性  
          blnSetAttr   =   True   '设置标记为真  
          lngAttr   =   GetAttr(sFile)   '获得文件属性  
          '去除文件的“只读”属性  
          Call   SetFileAttributes(sFile,   lngAttr   -   FILE_ATTRIBUTE_READONLY)  
  End   If  
  lngHandle   =   FProperties.FileHandle(sFile)   '获得文件句柄  
  If   lngHandle   <>   INVALID_HANDLE_VALUE   Then   '如果获得文件句柄成功  
          Dim   strDate   As   String  
          Dim   strTime   As   String  
          Dim   strWeekday   As   String  
          '获得文件的时间信息  
          lngResult   =   GetFileTime(lngHandle,   ftCreateTime,   ftAccessTime,   ftModifyTime)  
          If   lngResult   <>   0   Then   '如果获得文件时间信息成功  
                  Select   Case   FTime   '选择时间  
                          Case   ftCreate   '创建时间  
                                  '转换文件时间到本地时间  
                                  lngResult   =   FileTimeToLocalFileTime(ftCreateTime,   ftLocal)  
                          Case   ftModify   '最后修改时间  
                                  '转换文件时间到本地时间  
                                  lngResult   =   FileTimeToLocalFileTime(ftModifyTime,   ftLocal)  
                          Case   ftAccess   '最后访问时间  
                                  '转换文件时间到本地时间  
                                  lngResult   =   FileTimeToLocalFileTime(ftAccessTime,   ftLocal)  
                  End   Select  
                  If   lngResult   <>   0   Then   '如果转换文件时间到本地时间成功  
                          '转换本地时间到系统时间  
                          lngResult   =   FileTimeToSystemTime(ftLocal,   ftSystem)  
                          If   lngResult   <>   0   Then   '如果转换本地时间到系统时间成功  
                                  With   ftSystem  
                                          '获得日期  
                                          strDate   =   CStr(.wYear   &   "年"   &   .wMonth   &   "月"   &   .wDay   &   "日")  
                                          GetFileTimes   =   strDate  
                                          If   IncludeTime   Then   '如果要包含时间  
                                                  '获得时间  
                                                  strTime   =   Format$(.wHour   &   ":"   &   .wMinute   &   ":"   &   .wSecond,   "HH:MM:SS")  
                                                  GetFileTimes   =   GetFileTimes   &   "   "   &   strTime  
                                          End   If  
                                          If   IncludeWeekday   Then   '如果要包含星期  
                                                  '获得星期  
                                                  strWeekday   =   "   "   &   GetWeekDay(strDate)  
                                                  GetFileTimes   =   GetFileTimes   &   strWeekday  
                                          End   If  
                                  End   With  
                          Else  
                                  GetFileTimes   =   ""  
                          End   If  
                  Else  
                          GetFileTimes   =   ""  
                  End   If  
          Else  
                  GetFileTimes   =   ""  
          End   If  
  End   If  
  If   blnSetAttr   Then   '如果标记为真  
          Call   SetFileAttributes(sFile,   lngAttr)   '恢复文件的属性  
  End   If  
  FProperties.CloseFileHandle   (lngHandle)   '  
  Set   FProperties   =   Nothing   '  
  ErrHandle:  
          If   Err   <>   0   Then  
                  If   blnSetAttr   Then  
                          Call   SetFileAttributes(sFile,   lngAttr)  
                  End   If  
                  FProperties.CloseFileHandle   (lngHandle)   '  
                  Set   FProperties   =   Nothing  
                  GetFileTimes   =   ""  
          End   If  
  End   Function  
   
  '设置文件的时间信息  
  '日期:2002-6-17  
  Public   Function   SetFileTimes(ByVal   sFile   As   String,   ByVal   sDate   As   String,   ByVal   sTime   As   String,   FTime   As   FileTimeConstants)   As   Boolean  
  On   Error   GoTo   ErrHandle  
  Dim   oldCreate   As   FileTime   '原来的创建时间  
  Dim   oldModify   As   FileTime   '原来的最后修改时间  
  Dim   oldAccess   As   FileTime   '原来的最后访问时间  
  Dim   NewFileTime   As   FileTime   '新的时间  
  Dim   localFileTime   As   FileTime   '存放本地时间  
  Dim   sysFileTime   As   SYSTEMTIME   '存放系统时间  
  Dim   lngResult   As   Long   '存放函数执行结果  
  Dim   lngHandle   As   Long   '存放获得的文件句柄  
  Dim   FProperties   As   New   FileProperties   '新的   FileProperties   对象  
  Dim   tDate   As   Date   '存放日期  
  Dim   tTime   As   Date   '存放时间  
   
  SetFileTimes   =   True   '先假设函数执行成功  
  tDate   =   CDate(sDate)   '转换传入的日期  
  tTime   =   CDate(sTime)   '转换传入的时间  
  lngHandle   =   FProperties.FileHandle(sFile)   '获得文件句柄  
  '获得文件原来的时间信息  
  lngResult   =   GetFileTime(lngHandle,   oldCreate,   oldAccess,   oldModify)  
  '设置系统时间的内容  
  With   sysFileTime  
          .wYear   =   Year(tDate)  
          .wMonth   =   Month(tDate)  
          .wDay   =   Day(tDate)  
          .wHour   =   Hour(tTime)  
          .wMinute   =   Minute(tTime)  
          .wSecond   =   Second(tTime)  
          .wMilliseconds   =   0  
  End   With  
  '把系统时间转换为本地时间  
  lngResult   =   SystemTimeToFileTime(sysFileTime,   localFileTime)  
  '把本地时间转换为文件时间  
  lngResult   =   LocalFileTimeToFileTime(localFileTime,   NewFileTime)  
  Select   Case   FTime   '选择传入的时间类型  
          Case   ftCreate   '创建时间  
                  '设置创建时间  
                  lngResult   =   SetFileTime(lngHandle,   NewFileTime,   oldAccess,   oldModify)  
          Case   ftModify   '最后修改时间  
                  '设置最后修改时间  
                  lngResult   =   SetFileTime(lngHandle,   oldCreate,   oldAccess,   NewFileTime)  
          Case   ftAccess   '最后访问时间  
                  '设置最后访问时间  
                  lngResult   =   SetFileTime(lngHandle,   oldCreate,   NewFileTime,   oldModify)  
  End   Select  
  If   lngResult   =   0   Then   '如果设置文件时间失败  
          SetFileTimes   =   False  
  End   If  
  FProperties.CloseFileHandle   (lngHandle)   '关闭打开的文件句柄  
  Set   FProperties   =   Nothing   '清除   FProperties   对象占用的内存  
  ErrHandle:  
          If   Err   <>   0   Then  
                  FProperties.CloseFileHandle   (lngHandle)   '  
                  Set   FProperties   =   Nothing  
                  SetFileTimes
Top

4 楼wwfang(晴天)回复于 2002-07-01 22:16:37 得分 5接上面  
   
  '设置文件属性的   API   函数  
  Private   Declare   Function   SetFileAttributes   Lib   "kernel32"   Alias   "SetFileAttributesA"   (ByVal   lpFileName   As   String,   ByVal   dwFileAttributes   As   Long)   As   Long  
   
  '自定义的文件属性常数列表  
  '日期:2002-6-16  
  Public   Enum   FileAttributeConstants  
          [attrArchive]   =   &H20   '“存档”属性  
          [attrHidden]   =   &H2   '“隐藏”属性  
          [attrNormal]   =   &H80   '“普通”属性  
          [attrReadonly]   =   &H1   '“只读”属性  
          [attrSystem]   =   &H4   '“系统”属性  
  End   Enum  
   
  '测试文件是否具有“存档”属性  
  '日期:2002-6-16  
  Public   Function   IsArchive(ByVal   sFile   As   String)   As   Boolean  
  On   Error   Resume   Next  
  IsArchive   =   IIf((GetAttr(sFile)   And   vbArchive),   True,   False)  
  End   Function  
   
  '测试文件是否具有“只读”属性  
  '日期:2002-6-16  
  Public   Function   IsReadonly(ByVal   sFile   As   String)   As   Boolean  
  On   Error   Resume   Next  
  IsReadonly   =   IIf((GetAttr(sFile)   And   vbReadOnly),   True,   False)  
  End   Function  
   
  '测试文件是否具有“隐藏”属性  
  '日期:2002-6-16  
  Public   Function   IsHidden(ByVal   sFile   As   String)   As   Boolean  
  On   Error   Resume   Next  
  IsHidden   =   IIf((GetAttr(sFile)   And   vbHidden),   True,   False)  
  End   Function  
   
  '测试文件是否具有“系统”属性  
  '日期:2002-6-16  
  Public   Function   IsSystem(ByVal   sFile   As   String)   As   Boolean  
  On   Error   Resume   Next  
  IsSystem   =   IIf((GetAttr(sFile)   And   vbSystem),   True,   False)  
  End   Function  
   
  '测试文件是否具有“普通”属性  
  '日期:2002-6-16  
  Public   Function   IsNormal(ByVal   sFile   As   String)   As   Boolean  
  If   IsArchive(sFile)   Then  
          IsNormal   =   False  
          Exit   Function  
  End   If  
  If   IsReadonly(sFile)   Then  
          IsNormal   =   False  
          Exit   Function  
  End   If  
  If   IsHidden(sFile)   Then  
          IsNormal   =   False  
          Exit   Function  
  End   If  
  If   IsSystem(sFile)   Then  
          IsNormal   =   False  
          Exit   Function  
  End   If  
  IsNormal   =   True  
  End   Function  
   
  '设置文件属性  
  '日期:2002-6-16  
  Public   Function   SetFileAttribute(ByVal   sFile   As   String,   Attributes   As   FileAttributeConstants)   As   Boolean  
  On   Error   GoTo   ErrHandle  
  SetFileAttribute   =   CBool(SetFileAttributes(sFile,   Attributes))  
  ErrHandle:  
          If   Err   <>   0   Then  
                  SetFileAttribute   =   False  
          End   If  
  End   Function
Top

5 楼wwfang(晴天)回复于 2002-07-01 22:19:18 得分 5接上面  
   
  Option   Explicit  
  '获得指定文件的   DOS   文件路径及文件名  
  Private   Declare   Function   GetShortPathName   Lib   "kernel32"   Alias   "GetShortPathNameA"   (ByVal   lpszLongPath   As   String,   ByVal   lpszShortPath   As   String,   ByVal   cchBuffer   As   Long)   As   Long  
  '关闭句柄  
  Private   Declare   Function   CloseHandle   Lib   "kernel32"   (ByVal   hObject   As   Long)   As   Long  
  '获得句柄  
  Private   Declare   Function   CreateFile   Lib   "kernel32"   Alias   "CreateFileA"   (ByVal   lpFileName   As   String,   ByVal   dwDesiredAccess   As   Long,   ByVal   dwShareMode   As   Long,   lpSecurityAttributes   As   Any,   ByVal   dwCreationDisposition   As   Long,   ByVal   dwFlagsAndAttributes   As   Long,   ByVal   hTemplateFile   As   Long)   As   Long  
  Private   Const   CREATE_NEW   =   1   '创建文件;如文件存在则会出错  
  Private   Const   GENERIC_READ   =   &H80000000   '表示允许对文件进行读访问  
  Private   Const   GENERIC_WRITE   =   &H40000000   '表示允许对文件进行写访问  
  Private   Const   FILE_SHARE_WRITE   =   &H2   '表示允许对文件进行共享写访问  
  Private   Const   FILE_SHARE_READ   =   &H1   '表示允许对文件进行共享读访问  
  Private   Const   OPEN_EXISTING   =   3   '打开已存在的文件  
  Private   Const   OPEN_ALWAYS   =   4   '如文件不存在则创建它  
  Private   Const   FILE_FLAG_OVERLAPPED   =   &H40000000   '允许对文件进行重叠操作  
  Private   Const   INVALID_HANDLE_VALUE   =   -1  
   
  '获得指定文件的信息  
  Private   Declare   Function   SHGetFileInfo   Lib   "shell32.dll"   Alias   "SHGetFileInfoA"   (ByVal   pszPath   As   String,   ByVal   dwFileAttributes   As   Long,   psfi   As   SHFILEINFO,   ByVal   cbFileInfo   As   Long,   ByVal   uFlags   As   Long)   As   Long  
  '在指定的设备是画图形  
  Private   Declare   Function   ImageList_Draw   Lib   "comctl32.dll"   (ByVal   himl   As   Long,   ByVal   i   As   Long,   ByVal   hdcDst   As   Long,   ByVal   X   As   Long,   ByVal   Y   As   Long,   ByVal   fStyle   As   Long)   As   Long  
  Private   Const   MAX_PATH   =   260  
  Private   Const   ILD_TRANSPARENT   =   &H1               'Display   transparent  
  Private   Const   SHGFI_DISPLAYNAME   =   &H200  
  Private   Const   SHGFI_EXETYPE   =   &H2000  
  Private   Const   SHGFI_SYSICONINDEX   =   &H4000   'System   icon   index  
  Private   Const   SHGFI_LARGEICON   =   &H0               'Large   icon  
  Private   Const   SHGFI_SMALLICON   =   &H1               'Small   icon  
  Private   Const   SHGFI_SHELLICONSIZE   =   &H4  
  Private   Const   SHGFI_TYPENAME   =   &H400  
  Private   Const   BASIC_SHGFI_FLAGS   =   SHGFI_TYPENAME   _  
                  Or   SHGFI_SHELLICONSIZE   Or   SHGFI_SYSICONINDEX   _  
                  Or   SHGFI_DISPLAYNAME   Or   SHGFI_EXETYPE  
  '文件信息类型  
  Private   Type   SHFILEINFO  
                  hIcon   As   Long                                             '     out:   icon  
                  iIcon   As   Long                     '     out:   icon   index  
                  dwAttributes   As   Long                               '     out:   SFGAO_   flags  
                  szDisplayName   As   String   *   MAX_PATH   '     out:   display   name   (or   path)  
                  szTypeName   As   String   *   80                   '     out:   type   name  
  End   Type  
   
  '从缓冲区中获得字符串  
  '日期:2002-6-21  
  Private   Function   GetString(ByVal   sBuffer   As   String)   As   String  
  On   Error   Resume   Next  
  Dim   lngPos   As   Long  
  lngPos   =   InStr(1,   sBuffer,   Chr$(0))  
  If   lngPos   >   0   Then  
          GetString   =   Left$(sBuffer,   lngPos   -   1)  
  Else  
          GetString   =   sBuffer  
  End   If  
  End   Function  
   
  '获得指定文件的句柄  
  '日期:2002-6-16  
  Public   Function   FileHandle(ByVal   sFile   As   String)   As   Long  
  On   Error   GoTo   ErrHandle  
  Dim   lngResult   As   Long  
  '利用   CreateFile   API   函数获得文件的句柄(注意:文件必须存在)  
  'FileHandle   =   CreateFile(sFile,   0,   0,   ByVal   0&,   OPEN_EXISTING,   0,   ByVal   0&)  
  lngResult   =   CreateFile(sFile,   GENERIC_READ   Or   GENERIC_WRITE,   FILE_SHARE_READ   Or   FILE_SHARE_WRITE,   ByVal   0&,   OPEN_EXISTING,   0,   0)  
  FileHandle   =   IIf(lngResult   =   INVALID_HANDLE_VALUE,   -1,   lngResult)  
  ErrHandle:  
          If   Err   <>   0   Then  
                  FileHandle   =   -1  
          End   If  
  End   Function  
   
  '关闭指定文件的句柄  
  '日期:2002-6-16  
  Public   Function   CloseFileHandle(lHandle   As   Long)   As   Boolean  
  On   Error   GoTo   ErrHandle  
  Dim   lngResult   As   Long  
  lngResult   =   CloseHandle(lHandle)  
  CloseFileHandle   =   IIf(lngResult   =   0,   False,   True)  
  ErrHandle:  
          If   Err   <>   0   Then  
                  CloseFileHandle   =   False  
          End   If  
  End   Function  
   
   
  '获得指定文件的文件名(不包括路径)  
  '日期:2002-6-16  
  Public   Function   FileName(ByVal   sFile   As   String,   Optional   IncludeExtension   As   Boolean   =   True)   As   String  
  On   Error   GoTo   ErrHandle  
  Dim   strFileName   As   String  
  If   Trim$(sFile)   =   ""   Then   '如果传入的文件名为空  
          FileName   =   ""   '函数返回空值  
          Exit   Function   '退出函数  
  End   If  
  Dim   i   As   Long  
  For   i   =   Len(sFile)   To   1   Step   -1   '从后向前遍历文件名的每个字符  
          If   Mid$(sFile,   i,   1)   =   "/"   Then   '如果等于“/”  
                  strFileName   =   Mid$(sFile,   i   +   1)   '获得文件名  
                  If   IncludeExtension   Then  
                          FileName   =   strFileName  
                  Else  
                          Dim   lngExtension   As   Long  
                          lngExtension   =   Len(FileExtension(strFileName))  
                          If   lngExtension   <>   0   Then  
                                  FileName   =   Left$(strFileName,   Len(strFileName)   -   lngExtension   -   1)  
                          Else  
                                  FileName   =   strFileName  
                          End   If  
                  End   If  
                  Exit   Function   '退出过程  
          End   If  
  Next   i  
  ErrHandle:  
          If   Err   <>   0   Then  
                  FileName   =   ""  
                  Exit   Function  
          End   If  
  End   Function
Top

6 楼ayusay(阿于)回复于 2002-07-25 18:54:19 得分 3Dim   fso   As   Object  
          Dim   fil   As   Object  
           
          Set   fso   =   CreateObject("Scripting.FileSystemObject")  
   
           
          Set   fil   =   fso.GetFile("D:/Documents   and   Settings/Administrator/Local   Settings/Temp/~ce1AD.tmp")  
           
          With   fil  
                  Debug.Print   "文件名:"   &   .Name  
                  Debug.Print   "文件"   &   .Name   &   "的大小:"   &   .Size  
                  Debug.Print   "文件"   &   .Name   &   "的类型:"   &   .Type  
                  Debug.Print   "文件"   &   .Name   &   "的建立日期:"   &   .DateCreated  
                  Debug.Print   "文件"   &   .Name   &   "的最后访问日期:"   &   .DateLastAccessed  
                  Debug.Print   "文件"   &   .Name   &   "的最后修改日期:"   &   .DateLastModified  
                  Debug.Print   "文件"   &   .Name   &   "所在驱动器:"   &   .Drive  
                  Debug.Print   "文件"   &   .Name   &   "所在文件夹:"   &   .ParentFolder  
                  Debug.Print   "文件"   &   .Name   &   "文件名(不支持长文件名):"   &   .ShortName  
                  Debug.Print   "文件"   &   .Name   &   "完整路径(支持长文件名):"   &   .Path  
                  Debug.Print   "文件"   &   .Name   &   "完整路径(不支持长文件名):"   &   .ShortPath  
          End   With    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值