网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
VC++实现对文件夹时间的修改
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
述属性可以通过GetFileTime()来获取,对于文件夹,在通过CreateFile()函数将其打开后,其获取得到的句柄可以当作文件句柄来使用。因此,通过GetFileTime()函数同样也可以得到文件夹的时间属性。GetFileTime()函数原型如下:

BOOL GetFileTime(
 HANDLE hFile, // 文件句柄
 LPFILETIME lpCreationTime, // 创建时间的地址
 LPFILETIME lpLastAccessTime, // 最近访问时间的地址
 LPFILETIME lpLastWriteTime // 最近修改时间的地址
);

  其中后三个参数均是指向FILETIME结构的指针,得到的也都是UTC时间,如果需要,可以通过FileTimeToLocalFileTime()函数将此UTC时间转化成本地时间。而且还可以进一步通过FileTimeToSystemTime()函数将其从文件时间格式转化成系统时间格式,转化后的时间格式将保存在一个SYSTEMTIME结构对象中。类似的,在将时间信息写入到文件夹属性时,如果不是文件时间格式也应当通过SystemTimeToFileTime()函数将其从系统时间格式转换成文件时间格式,然后再通过SetFileTime()函数将指定的时间写入到文件夹的时间属性中去。这样,在进行数据备份和恢复的过程中,包括根目录在内的所有文件夹都可以保持时间属性的一致。

 简单示例

  下面根据前面的讲述而给出一个简单的应用示例,通过此示例可以从指定的文件夹读取时间属性信息并可在经过修改后再回写进去(在此仅对最近修改时间进行处理,对于其他的时间属性可用类似的方法加以实现)。这里通过两个函数GetDirTime()和SetDirTime()来实现对文件夹时间信息的获取与更改处理,下面就以注释的形式对这两个函数的实现过程进行讲解:

// 获取指定文件夹的时间属性,入口参数DirName指定了待处理的文件夹,stime为一
// 指向SYSTEMTIME结构的指针
BOOL CSetForderTimeDlg::GetDirTime(CString DirName, SYSTEMTIME &stime){
 // 打开文件夹
 HANDLE hDir = CreateFile (DirName, GENERIC_READ,
   FILE_SHARE_READ|FILE_SHARE_DELETE,
   NULL, OPEN_EXISTING,
   FILE_FLAG_BACKUP_SEMANTICS, NULL);
 FILETIME lpCreationTime; // 文件夹的创建时间
 FILETIME lpLastAccessTime; // 对文件夹的最近访问时间
 FILETIME lpLastWriteTime; // 文件夹的最近修改时间
 // 获取文件夹时间属性信息
 if (GetFileTime(hDir, &lpCreationTime, &lpLastAccessTime, &lpLastWriteTime)){
  FILETIME ftime;
  FileTimeToLocalFileTime(&lpLastWriteTime, &ftime); // 转换成本地时间
  FileTimeToSystemTime(&ftime, &stime); // 转换成系统时间格式
 }
 CloseHandle(hDir); // 关闭打开过的文件夹
 return retval;
}

// 设置指定文件夹的时间属性,入口参数DirName指定了待处理的文件夹,new_time
// 为一指向SYSTEMTIME结构的指针
BOOL CSetForderTimeDlg::SetDirTime(CString DirName, SYSTEMTIME new_stime){
 // 打开目录的Win32 API调用
 HANDLE hDir = CreateFile(DirName, GENERIC_READ|GENERIC_WRITE,
   FILE_SHARE_READ|FILE_SHARE_DELETE,
   NULL, OPEN_EXISTING,
   FILE_FLAG_BACKUP_SEMANTICS, NULL);
 FILETIME lpCreationTime; // 文件夹的创建时间
 FILETIME lpLastAccessTime; // 对文件夹的最近访问时间
 FILETIME lpLastWriteTime; // 对文件夹的最近修改时间
 SystemTimeToFileTime(&new_stime, &lpCreationTime); // 转换成文件时间格式
 SystemTimeToFileTime(&new_stime, &lpLastAccessTime);
 SystemTimeToFileTime(&new_stime, &lpLastWriteTime);
 // 设置文件夹的时间属性
 BOOL retval = SetFileTime(hDir, &lpCreationTime, &lpLastA

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号