Delphi中提供了很完备的Windows API函数的调用接口,可以方便的进行高级Windows编程。利用Delphi中的FindFirst函数可以得到一个文件的属性记录,该记录中的FindData域中就记载了详细的文件时间信息。然而遗憾的是,FindData中的时间信息是不能直接得到的。因此,本人编写了一个转换函数来完成文件时间格式的转换。下面给出了具体的实现方法,仅供参考:
function CovFileDate(Fd:_FileTime):TDateTime;
{ 转换文件的时间格式 }
var
Tct:_SystemTime;
Temp:_FileTime;
begin
FileTimeToLocalFileTime(Fd,Temp);
FileTimeToSystemTime(Temp,Tct);
CovFileDate:=SystemTimeToDateTime(Tct);
end;
有了上面的函数支持,我们就可以获取一个文件的时间信息了。以下是一个简单的例子:
procdeure GetFileTime(const Tf:string);
{ 获取文件时间,Tf表示目标文件路径和名称 }
const
Model='yyyy/mm/dd,hh:mm:ss'; { 设定时间格式 }
var
Tp:TSearchRec; { 申明Tp为一个查找记录 }
T1,T2,T3:string;
begin
FindFirst(Tf,faAnyFile,Tp); { 查找目标文件 } T1:=FormatDateTime(Model,
CovFileDate(Tp.FindData.ftCreationTime)));
{ 返回文件的创建时间 }
T2:=FormatDateTime(Model,
CovFileDate(Tp.FindData.ftLastWriteTime)));
{ 返回文件的修改时间 }
T3:=FormatDateTime(Model,Now));
{ 返回文件的当前访问时间 }
FindClose(Tp);
end;
设置文件的时间要复杂一些,这里介绍利用Delphi中的DataTimePicker组件来辅助完成这一复杂的操作。下面的例子利用了四个DataTimePicker组件来完成文件创建时间和修改时间的设置。注意:文件的访问时间用修改时间来代替。使用下面的例子时,请在您的Form上添加四个DataTimePicker组件。其中第一和第三个DataTimePicker组件中的Kind设置为dtkDate,第二个和第四个DataTimePicker组件中的Kind设置为dtkTime.
procedure SetFileDateTime(const Tf:string);
{ 设置文件时间,Tf表示目标文件路径和名称 }
var
Dt1,Dt2:Integer;
Fs:TFileStream;
Fct,Flt:TFileTime;
begin
Dt1:=DateTimeToFileDate(
Trunc(Form1.DateTimePicker1.Date) + Frac(Form1.DateTimePicker2.Time));
Dt2:=DateTimeToFileDate(
Trunc(Form1.DateTimePicker3.Date) + Frac(Form1.DateTimePicker4.Time));
{ 转换用户输入在DataTimePicker中的信息 }
try
FS := TFileStream.Create(Tf, fmOpenReadWrite);
try
if DosDateTimeToFileTime(LongRec(DT1).Hi, LongRec(DT1).Lo, Fct) and
LocalFileTimeToFileTime(Fct, Fct) and
DosDateTimeToFileTime(LongRec(DT2).Hi, LongRec(DT2).Lo, Flt) and
LocalFileTimeToFileTime(Flt, Flt)
then SetFileTime(FS.Handle,
@Fct, @Flt, @Flt);
{ 设置文件时间属性 }
finally
FS.Free;
end;
except
MessageDlg('日期修改操作失败!',
mtError, [mbOk], 0);
{ 因为目标文件正在被使用等原因而导致失败 }
end;
end;
以上简单介绍了文件时间属性的修改方法,请注意:修改文件时间的范围是从公元1792年9月19日开始的,上限可以达到公元2999年或更高。另外,请不要将此技术用于破坏他人文件等非正当途径。

转载于:https://www.cnblogs.com/myamanda/articles/1610401.html

在Delphi中获取和修改文件的时间相关推荐

  1. c语言 获取文件修改时间,(C语言)获取并修改文件夹时间(创建时间、修改时间、访问时间)...

    背景 在Windows系统下没有提供可以对文件夹时间属性修改的方法或者API,在上一篇文章中我们提到了文件时间的函数,那么我们可以以打开文件的方式打开文件夹,然后通过修改文件时间的API函数对文件夹时 ...

  2. linux 禁止文件修改时间,linux 修改文件的时间属性

    二.修改文件时间 创建文件我们可以通过touch来创建.同样,我们也可以使用touch来修改文件时间.touch的相关参数如下: -a : 仅修改access time. -c : 仅修改时间,而不建 ...

  3. Delphi中获取路径的函数

    Delphi中获取路径的函数 //********获取当前路径*************** GetCurrentDir() //获取当前的Windows打开的目录,无斜'\' extractFile ...

  4. 【Git】Git获取Commit修改文件列表

    Git获取Commit修改文件列表 获得Git本次Commit修改的文件 #!/bin/bash# 命令格式 # 会列出compare2与compare1的不同. # git diff --name- ...

  5. delphi选择打印机:Delphi中获取打印机设备

    delphi选择打印机:Delphi中获取打印机设备名和端口名 疯狂代码 http://www.CrazyCoder.cn/ :http:/www.CrazyCoder.cn/Delphi/Artic ...

  6. 如何修改文件的时间信息?

    如何修改文件的时间信息?什么是文件的时间信息?其实就是文件的时间属性,包括文件的创建时间和修改时间,相信大家都应该知道,通过打开文件的属性窗口就能查看到,任何文件都有时间信息,这是文件的重要属性.有时 ...

  7. touch - 修改文件的时间戳记.

    总览 touch [-acm][-r ref_file(参照文件)|-t time(时间值)] file(文件名)... 被废弃的版本: touch [-acm][ugly_time] file(文件 ...

  8. linux将文件的时间记录改为,Linux下修改文件创建时间(修改文件更改时间)

    Linux下修改文件创建时间(修改文件更改时间) 进到要改的文件目录里 find . -name "*" -exec touch '{}' \; 注:最后一定要加分号,{}外一定要 ...

  9. linux修改文件创建的时间格式,Linux下修改文件创建时间(修改文件更改时间)

    Linux下修改文件创建时间(修改文件更改时间) 进到要改的文件目录里 find . -name "*" -exec touch '{}' \; 注:最后一定要加分号,{}外一定要 ...

最新文章

  1. VIM 必知必会12大类型操作
  2. Flink 必知必会:Flink Runtime Architecture
  3. python基础之删除文件及删除目录的方法
  4. c# 读取机器CPU信息,硬盘信息,网卡信息
  5. 微软.NET Framework 4.5.2 RTM正式版
  6. 升级python(2.7-3.6.2)
  7. 产品运营必备的素质有哪些
  8. SpringMVC强大的数据绑定(2)——第六章 注解式控制器详解——跟着开涛学SpringMVC...
  9. docker compose入门
  10. Mono 基于Jexus发布,创建中文文件名乱码及解决办法
  11. 浏览器提示:你的连接不是专用连接的解决方法
  12. 微信小程序绘制图表(折线图、柱状图)
  13. android常用的动态分析工具,Android逆向-4.IDA工具介绍-动态分析界面简单介绍-Go语言中文社区...
  14. php去除空格、制表符、换页符
  15. 2022hgame-week1 wp
  16. 窄带高清赋能体育赛事,世界杯高清直播背后的技术变革
  17. 直流无刷电机(BLDC)与永磁同步电机(PMSM)的区别
  18. 1602液晶显示简易计算器
  19. 尝试Ping百度域名后的思考
  20. 英语写作中常见的“转折”小结

热门文章

  1. php增加vip等级设置,xiu主题添加vip等级评论样式
  2. configureWebpack与chainWebpack
  3. 使用redux和axios获取api数据
  4. 深入理解继承知识(下)
  5. 集群资源分配_推荐一款MySQL日常运维和集群管理的自动化平台--Arkcontrol
  6. hexo next 主题安装 livere 评论插件
  7. day02:关于惯性导航工具箱的学习与使用:use of the progen
  8. java 鼠标动眼睛动_js动画_看着鼠标移动的眼球_眼睛_跟着随鼠标移动
  9. 面试题-java基本数据类型和运算符
  10. [VB]多级目录创建函数,支持很深的目录创建。