delphi源码获取文件的创建修改访问时间,及大小
在Delphi编程环境中,我们经常需要获取文件的各种属性,包括文件的创建时间、最后修改时间、最后访问时间以及文件的大小。这些信息对于文件管理和日志记录等应用场景至关重要。下面我们将详细探讨如何使用Delphi源码来实现这些功能。 我们需要引入Windows系统库`Windows`,它包含了处理文件属性的函数。在Delphi中,我们可以通过以下方式导入: ```delphi uses Windows, SysUtils; ``` 接下来,我们将介绍如何获取文件的时间戳: 1. 文件的创建时间: 使用`GetFileTime`函数可以获取文件的创建时间。该函数需要一个`THandle`类型的参数,即文件句柄,以及三个`TFileTime`类型的变量来接收时间戳。以下是如何使用Delphi代码获取并显示文件创建时间的示例: ```delphi function GetCreationTime(const FileName: string): TDateTime; var Handle: THandle; CreationTime, LastAccessTime, LastWriteTime: TFileTime; begin Result := 0; Handle := CreateFile(PChar(FileName), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if Handle <> INVALID_HANDLE_VALUE then try if GetFileTime(Handle, @CreationTime, @LastAccessTime, @LastWriteTime) then Result := FileTimeToSystemTime(CreationTime).dtDate; finally CloseHandle(Handle); end; end; ``` 2. 文件的最后修改时间: 获取文件的最后修改时间同样使用`GetFileTime`函数,但需要将时间戳赋值给`LastWriteTime`变量。转换后的`TDateTime`值表示的是自1899年12月30日以来的日期和时间: ```delphi function GetLastWriteTime(const FileName: string): TDateTime; var Handle: THandle; CreationTime, LastAccessTime, LastWriteTime: TFileTime; begin Result := 0; Handle := CreateFile(PChar(FileName), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if Handle <> INVALID_HANDLE_VALUE then try if GetFileTime(Handle, @CreationTime, @LastAccessTime, @LastWriteTime) then Result := FileTimeToSystemTime(LastWriteTime).dtDate; finally CloseHandle(Handle); end; end; ``` 3. 文件的最后访问时间: 获取文件的最后访问时间同样使用`GetFileTime`函数,但需要将时间戳赋值给`LastAccessTime`变量: ```delphi function GetLastAccessTime(const FileName: string): TDateTime; var Handle: THandle; CreationTime, LastAccessTime, LastWriteTime: TFileTime; begin Result := 0; Handle := CreateFile(PChar(FileName), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if Handle <> INVALID_HANDLE_VALUE then try if GetFileTime(Handle, @CreationTime, @LastAccessTime, @LastWriteTime) then Result := FileTimeToSystemTime(LastAccessTime).dtDate; finally CloseHandle(Handle); end; end; ``` 4. 文件的大小: 要获取文件的大小,我们可以使用`GetFileSize`函数。它返回一个`DWORD`类型的值,表示文件的字节数。如果文件大小超过4GB,可以使用`GetFileSizeEx`函数,它返回一个`ULARGE_INTEGER`类型的值: ```delphi function GetFileSize(const FileName: string): Int64; var Handle: THandle; begin Result := -1; Handle := CreateFile(PChar(FileName), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if Handle <> INVALID_HANDLE_VALUE then try Result := GetFileSize(Handle, nil); finally CloseHandle(Handle); end; end; ``` 通过上述函数,你可以轻松地在Delphi程序中获取文件的创建、修改、访问时间以及大小信息。请注意,这些函数都需要确保文件存在,并且具有读取权限。在实际应用中,你可能还需要处理异常和错误情况,以确保程序的健壮性。
- 1
- yuanrongqiang2014-01-30真实有效,我已经参考了部分代码,谢谢
- vikingcheng772013-08-29直接拷贝应用,效果不错
- NetworkConfigurer2013-11-27D7版本直接可以使用,谢谢
- hxw200820082013-01-04可以获取,在某方面还是很有用的,谢谢
- xmstone2013-06-11delphi 可以取得文件的各种属性,如创建时间、修改时间、文件大小及作者等等
- 粉丝: 113
- 资源: 740
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C语言-leetcode题解之70-climbing-stairs.c
- C语言-leetcode题解之68-text-justification.c
- C语言-leetcode题解之66-plus-one.c
- C语言-leetcode题解之64-minimum-path-sum.c
- C语言-leetcode题解之63-unique-paths-ii.c
- C语言-leetcode题解之62-unique-paths.c
- C语言-leetcode题解之61-rotate-list.c
- C语言-leetcode题解之59-spiral-matrix-ii.c
- C语言-leetcode题解之58-length-of-last-word.c
- 计算机编程课程设计基础教程