正文

获取某一路径下所有文件的文件名以及创建、修改时间2006-05-11 09:43:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/itzhiren/13885.html

分享到:

程序主体是从论坛里面的帖子得来,只是我自己稍加改进,得到如下程序,获取某一文件夹下面的文件总数、各个文件的创建时间、访问时间、改写时间。如果要获取某一种类型的文件,只需要判断文件名的扩展名是否是你想要的就可以了,有兴趣的朋友可以自己实现一下。

CLEAR
#Define BYTE_2               256
#Define OF_READ                0
#Define OF_SHARE_DENY_NONE    64
#Define HFILE_ERROR           -1
#Define dwordPlus     4294967296

Declare Integer GetFileTime In kernel32 ;
    Integer hFile, ;
    string @lpCreationTime, ;
    string @lpLastAccessTime, ;
    string @lpLastWriteTime
Declare Integer FileTimeToLocalFileTime In kernel32 ;
    string  lpFileTime, ;
    string @lpLocalFileTime
Declare INTEGER FileTimeToSystemTime IN kernel32 ;
    STRING  FILETIME,;
    STRING @SYSTEMTIME
Declare INTEGER OpenFile IN kernel32 ;
    STRING  lpFileName,;
    STRING @lpReOpenBuff,;
    INTEGER wStyle
Declare INTEGER CloseHandle IN kernel32 INTEGER hObject

Local lpCreationTime, lpLastAccessTime, lpLastWriteTime, lcFilename, hFile, FileTimeBuffer
lpCreationTime = space( 8 )
lpLastAccessTime = space( 8 )
lpLastWriteTime = space( 8 )

SET PATH TO SYS(5)+SYS(2003)+"\"
lpath=SYS(5)+SYS(2003)+"\"

filecount=ADIR(xx)
? "共有:"+ALLTRIM(STR(filecount))+"个文件"
FOR i=1 TO filecount
*!* lcFilename = getfile()
 lcFilename=lpath+xx(i,1)
lpReOpenBuff = REPLI (Chr(0), 250)
hFile = OpenFile (lcFilename, @lpReOpenBuff, OF_SHARE_DENY_NONE)
= GetFileTime( hFile, @lpCreationTime, @lpLastAccessTime, @lpLastWriteTime )
= CloseHandle (hFile)

? "第"+ALLTRIM(STR(i))+"个文件: " + lcFilename
? "创建时间: ", transformFiletime(lpCreationTime)
? "访问时间: ", transformFiletime(lpLastAccessTime)
? "改写时间: ", transformFiletime(lpLastWriteTime)
? ""
NEXT
RETURN

*--------------------------------
Function transformFiletime
    Lparameters LpFileTime
    Local SystemTimeBuffer, FileTimeBuffer
    FileTimeBuffer = space(8)
    = FileTimeToLocalFileTime( LpFileTime, @FileTimeBuffer )
    SystemTimeBuffer = SPACE(16)
    fResult = FileTimeToSystemTime(FileTimeBuffer, @SystemTimeBuffer)

    If fResult = 0
        ldDateTime = {^1901/01/01 00:00:01}
    Else
        lnYear = ASC(SUBSTR(SystemTimeBuffer, 1, 1)) + (ASC(SUBSTR(SystemTimeBuffer, 2, 1))* BYTE_2)
        lnMonth = ASC(SUBSTR(SystemTimeBuffer, 3, 1)) + (ASC(SUBSTR(SystemTimeBuffer, 4, 1))* BYTE_2)
        lnDay = ASC(SUBSTR(SystemTimeBuffer, 7, 1)) + (ASC(SUBSTR(SystemTimeBuffer, 8, 1))* BYTE_2)
        lnHour = ASC(SUBSTR(SystemTimeBuffer, 9, 1)) + (ASC(SUBSTR(SystemTimeBuffer, 10, 1))* BYTE_2)
        lnMinute = ASC(SUBSTR(SystemTimeBuffer, 11, 1)) + (ASC(SUBSTR(SystemTimeBuffer, 12, 1))* BYTE_2)
        lnSecond = ASC(SUBSTR(SystemTimeBuffer, 13, 1)) + (ASC(SUBSTR(SystemTimeBuffer, 14, 1))* BYTE_2)
        lcBuild = "^" + ALLTRIM(STR(lnYear)) ;
            + "/" + ALLTRIM(STR(lnMonth)) ;
            + "/" + ALLTRIM(STR(lnDay)) ;
            + " " + ALLTRIM(STR(lnHour)) ;
            + ":" + ALLTRIM(STR(lnMinute)) ;
            + ":" + ALLTRIM(STR(lnSecond))
        ldDateTime = {&lcBuild}
    Endif
    Return ldDateTime
Endfunc

阅读(5193) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册