CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

一个问题 “怎么才能取一个文件的创建时间”

楼主jinhailong(一刀仙)2003-07-02 13:56:56 在 VB / 基础类 提问

我偏要空!! 问题点数:20、回复次数:6Top

1 楼pigsanddogs(我爱吃猪肉,但是长不胖,为什么??)回复于 2003-07-02 14:07:37 得分 15

FileDateTime     可以吗?   不行的话用   FindFirstFileTop

2 楼lwm1977(大维)回复于 2003-07-02 14:11:12 得分 0

get开头的一个API函数Top

3 楼dandy1437((乐天派!直面所有问题))回复于 2003-07-02 14:16:28 得分 4

读取文件的建立时间及存取时间    
   
   
    想要进一步读取文件的相关资讯,   必须先呼叫   API   函数的   OpenFile   取得文件的  
  Handle,   然後再利用   Handle   呼叫   GetFileInformationByHandle   读取文件的相关  
  资讯,   而在读取的文件相关资讯中便含有文件建立、修改、及存取时间,   程式执  
  行过程如下:(假设想读取的文件是"c:\autoexec.bat")  
   
  REF   更改文件日期时间    
   
  Public   Const   OFS_MAXPATHNAME   =   128  
  Public   Const   OF_READ   =   &H0  
  Type   OFSTRUCT  
          cBytes   As   Byte  
          fFixedDisk   As   Byte  
          nErrCode   As   Integer  
          Reserved1   As   Integer  
          Reserved2   As   Integer  
          szPathName(OFS_MAXPATHNAME)   As   Byte  
  End   Type  
   
  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  
   
  Type   FileTime  
            dwLowDateTime   As   Long  
            dwHighDateTime   As   Long  
  End   Type  
   
   
  Type   BY_HANDLE_FILE_INFORMATION  
            dwFileAttributes   As   Long  
            ftCreationTime   As   FileTime  
            ftLastAccessTime   As   FileTime  
            ftLastWriteTime   As   FileTime  
            dwVolumeSerialNumber   As   Long  
            nFileSizeHigh   As   Long  
            nFileSizeLow   As   Long  
            nNumberOfLinks   As   Long  
            nFileIndexHigh   As   Long  
            nFileIndexLow   As   Long  
  End   Type  
   
  Type   TIME_ZONE_INFORMATION  
            bias   As   Long  
            StandardName(32)   As   Integer  
            StandardDate   As   SYSTEMTIME  
            StandardBias   As   Long  
            DaylightName(32)   As   Integer  
            DaylightDate   As   SYSTEMTIME  
            DaylightBias   As   Long  
  End   Type  
   
   
  Declare   Function   GetTimeZoneInformation   Lib   "kernel32"   _  
  (lpTimeZoneInformation   As   TIME_ZONE_INFORMATION)   As   Long  
  Declare   Function   OpenFile   Lib   "kernel32"   (ByVal   lpFileName   As   String,   _  
  lpReOpenBuff   As   OFSTRUCT,   ByVal   wStyle   As   Long)   As   Long  
  Declare   Function   GetFileInformationByHandle   Lib   "kernel32"   (ByVal   hFile   As   _  
  Long,   lpFileInformation   As   BY_HANDLE_FILE_INFORMATION)   As   Long  
  Declare   Function   CloseHandle   Lib   "kernel32"   (ByVal   hObject   As   Long)   As   Long  
  Declare   Function   FileTimeToSystemTime   Lib   "kernel32"   (lpFileTime   As   _  
  FileTime,   lpSystemTime   As   SYSTEMTIME)   As   Long  
   
  Dim   FileHandle   As   Long  
  Dim   FileInfo   As   BY_HANDLE_FILE_INFORMATION  
  Dim   lpReOpenBuff   As   OFSTRUCT,   ft   As   SYSTEMTIME  
  Dim   tZone   As   TIME_ZONE_INFORMATION  
   
  Dim   dtCreate   As   Date   '   建立时间  
  Dim   dtAccess   As   Date   '   存取日期  
  Dim   dtWrite   As   Date   '   修改时间  
  Dim   bias   As   Long  
   
  '   先取得   autoexec.bat   的   File   Handle  
  FileHandle   =   OpenFile("c:\autoexec.bat",   lpReOpenBuff,   OF_READ)  
  '   利用   File   Handle   读取文件资讯  
  Call   GetFileInformationByHandle(FileHandle,   FileInfo)  
  Call   CloseHandle(FileHandle)  
  '   读取   Time   Zone   资讯,   因为上一步骤的文件时间是「格林威治」时间  
  Call   GetTimeZoneInformation(tZone)  
  bias   =   tZone.bias   '   时间差,   以「分」为单位  
  Call   FileTimeToSystemTime(FileInfo.ftCreationTime,   ft)   '   转换时间资料结构  
  dtCreate   =   DateSerial(ft.wYear,   ft.wMonth,   ft.wDay)   +   ;  
        TimeSerial(ft.wHour,   ft.wMinute   -   bias,   ft.wSecond)  
  Call   FileTimeToSystemTime(FileInfo.ftLastAccessTime,   ft)  
  dtAccess   =   DateSerial(ft.wYear,   ft.wMonth,   ft.wDay)   +   ;  
        TimeSerial(ft.wHour,   ft.wMinute   -   bias,ft.wSecond)  
  Call   FileTimeToSystemTime(FileInfo.ftLastWriteTime,   ft)  
  dtWrite   =   DateSerial(ft.wYear,   ft.wMonth,   ft.wDay)   +  
        TimeSerial(ft.wHour,   ft.wMinute   -   bias,ft.wSecond)  
   
  '执行以上程式所得到的   dtCreate、dtWrite、及   dtAccess   变数,   即分别为文件  
  '建立、修改、及存取时间。Top

4 楼IMHELLFIRE(真正的用户痛恨真正的程序员。)回复于 2003-07-02 14:19:06 得分 0

API:GetFileTime()Top

5 楼jinhailong(一刀仙)回复于 2003-07-02 14:19:56 得分 0

那怎么样才可以判断这个文件的寿命,上面说得不清楚,我是指文件的岁数,比如a文件已经存在3天以上,b文件已经创建了10天等等Top

6 楼yiph(逸飘寒)回复于 2003-07-02 14:25:28 得分 1

Declare   Function   GetFileTime   Lib   "kernel32"   Alias   "GetFileTime"   (ByVal   hFile   As   Long,   lpCreationTime   As   FILETIME,   lpLastAccessTime   As   FILETIME,   lpLastWriteTime   As   FILETIME)   As   Long  
   
  取得指定文件的时间信息  
  Long,非零表示成功,零表示失败。会设置GetLastErrorhFile   ----------     Long,文件的句柄  
   
      lpCreationTime   -     FILETIME,用于装载文件的创建时间  
   
      lpLastAccessTime   -     FILETIME,用于装载文件上一次访问的时间(FAT文件系统不支持这一特性)  
   
      lpLastWriteTime   -     FILETIME,用于装载文件上一次修改的时间如果不需要特定的信息,那么lpCreationTime,lpLastAccessTime,lpLastWriteTime都可以设置为零(用ByVal  
      As   Long)。这个函数返回的文件时间采用UTC格式  
   
  'Files  
  'This   program   needs   a   Dialog   box,   named   CDBox1  
  '     (To   add   the   Common   Dialog   Box   to   your   tools   menu,   go   to   Project->Components   (or   press   CTRL-T)  
  '       and   select   Microsoft   Common   Dialog   control)  
  Private   Type   FILETIME  
          dwLowDateTime   As   Long  
          dwHighDateTime   As   Long  
  End   Type  
  Private   Type   SHFILEOPSTRUCT  
          hWnd   As   Long  
          wFunc   As   Long  
          pFrom   As   String  
          pTo   As   String  
          fFlags   As   Integer  
          fAborted   As   Boolean  
          hNameMaps   As   Long  
          sProgress   As   String  
  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  
  Private   Const   GENERIC_WRITE   =   &H40000000  
  Private   Const   OPEN_EXISTING   =   3  
  Private   Const   FILE_SHARE_READ   =   &H1  
  Private   Const   FILE_SHARE_WRITE   =   &H2  
  Private   Const   FO_DELETE   =   &H3  
  Private   Declare   Function   CopyFile   Lib   "kernel32"   Alias   "CopyFileA"   (ByVal   lpExistingFileName   As   String,   ByVal   lpNewFileName   As   String,   ByVal   bFailIfExists   As   Long)   As   Long  
  Private   Declare   Function   CreateDirectory   Lib   "kernel32"   Alias   "CreateDirectoryA"   (ByVal   lpPathName   As   String,   lpSecurityAttributes   As   Long)   As   Long  
  Private   Declare   Function   DeleteFile   Lib   "kernel32"   Alias   "DeleteFileA"   (ByVal   lpFileName   As   String)   As   Long  
  Private   Declare   Function   GetFileSize   Lib   "kernel32"   (ByVal   hFile   As   Long,   lpFileSizeHigh   As   Long)   As   Long  
  Private   Declare   Function   GetFileTime   Lib   "kernel32"   (ByVal   hFile   As   Long,   lpCreationTime   As   FILETIME,   lpLastAccessTime   As   FILETIME,   lpLastWriteTime   As   FILETIME)   As   Long  
  Private   Declare   Function   MoveFile   Lib   "kernel32"   Alias   "MoveFileA"   (ByVal   lpExistingFileName   As   String,   ByVal   lpNewFileName   As   String)   As   Long  
  Private   Declare   Function   CreateFile   Lib   "kernel32"   Alias   "CreateFileA"   (ByVal   lpFileName   As   String,   ByVal   dwDesiredAccess   As   Long,   ByVal   dwShareMode   As   Long,   lpSecurityAttributes   As   Long,   ByVal   dwCreationDisposition   As   Long,   ByVal   dwFlagsAndAttributes   As   Long,   ByVal   hTemplateFile   As   Long)   As   Long  
  Private   Declare   Function   CloseHandle   Lib   "kernel32"   (ByVal   hObject   As   Long)   As   Long  
  Private   Declare   Function   SHFileOperation   Lib   "shell32.dll"   Alias   "SHFileOperationA"   (lpFileOp   As   SHFILEOPSTRUCT)   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   Sub   Form_Load()  
          'KPD-Team   1998  
          'URL:   http://www.allapi.net/  
          'E-Mail:   KPDTeam@Allapi.net  
          Dim   lngHandle   As   Long,   SHDirOp   As   SHFILEOPSTRUCT,   lngLong   As   Long  
          Dim   Ft1   As   FILETIME,   Ft2   As   FILETIME,   SysTime   As   SYSTEMTIME  
          'Set   the   dialog's   title  
          CDBox.DialogTitle   =   "Choose   a   file   ..."  
          'Raise   an   error   when   the   user   pressed   cancel  
          CDBox.CancelError   =   True  
          'Show   the   'Open   File'-dialog  
          CDBox.ShowOpen  
          'Create   a   new   directory  
          CreateDirectory   "C:\KPD-Team",   ByVal   &H0  
          'Copy   the   selected   file   to   our   new   directory  
          CopyFile   CDBox.filename,   "C:\KPD-Team\"   +   CDBox.FileTitle,   0  
          'Rename   the   file  
          MoveFile   "C:\KPD-Team\"   +   CDBox.FileTitle,   "C:\KPD-Team\test.kpd"  
          'Open   the   file  
          lngHandle   =   CreateFile("C:\KPD-Team\test.kpd",   GENERIC_WRITE,   FILE_SHARE_READ   Or   FILE_SHARE_WRITE,   ByVal   0&,   OPEN_EXISTING,   0,   0)  
          'Get   the   file's   size  
          MsgBox   "The   size   of   the   selected   file   is"   +   Str$(GetFileSize(lngHandle,   lngLong))   +   "   bytes."  
          'Get   the   fil's   time  
          GetFileTime   lngHandle,   Ft1,   Ft1,   Ft2  
          'Convert   the   file   time   to   the   local   file   time  
          FileTimeToLocalFileTime   Ft2,   Ft1  
          'Convert   the   file   time   to   system   file   time  
          FileTimeToSystemTime   Ft1,   SysTime  
          MsgBox   "The   selected   file   was   created   on"   +   Str$(SysTime.wMonth)   +   "/"   +   LTrim(Str$(SysTime.wDay))   +   "/"   +   LTrim(Str$(SysTime.wYear))  
          'Close   the   file  
          CloseHandle   lngHandle  
          'Delete   the   file  
          DeleteFile   "C:\KPD-Team\test.kpd"  
          With   SHDirOp  
                  .wFunc   =   FO_DELETE  
                  .pFrom   =   "C:\KPD-Team"  
          End   With  
          'Delete   the   directory  
          SHFileOperation   SHDirOp  
          End  
  End   Sub  
  Top

相关问题

  • VS2003.net创建工程文件后怎么才能产生.mak文件?
  • 创建文件
  • 如何才能从.srd文件中动态的创建数据窗口
  • 敢问大虾,怎么才能够比较两个文件的创建日期
  • 在VB里怎样才能创建一个UNIX格式的文本文件
  • 用fso写文件时怎样才能把文件创建在当前目录下
  • 我用 FileSystemObject 创建了一个文件夹,怎么样才能使建立的文件夹属性是"隐藏"
  • 创建文件夹?
  • 创建DEF文件?
  • utf8 创建文件

关键词

  • .net
  • 文件
  • filetime
  • typetype
  • typeprivate
  • integer
  • lpcreationtime
  • lplastaccesstime
  • lplastwritetime
  • 创建

得分解答快速导航

  • 帖主:jinhailong
  • pigsanddogs
  • dandy1437
  • yiph

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo