修改文件创建日期,访问日期和修改日期
2010-01-06 19:39
309 查看
有时出于一些同步了或者其他什么乱七八糟的原因,我们需要修改一个文件的创建日期等内容,网上找了一下算法,记下来以备后用.
void CModifyBINDlg::OnButton1()
{
// TODO: Add your control notification handler code here
//定义一个和文件信息兼容的结构,用于保存获取的信息
typedef struct _FILE_INFO {
TCHAR szFileTitle[128]; //文件的标题名
DWORD dwFileAttributes; //文件的属性
FILETIME ftCreationTime; //文件的创建时间
FILETIME ftLastAccessTime; //文件的最后访问时间
FILETIME ftLastWriteTime; //文件的最后修改时间
DWORD nFileSizeHigh; //文件大小的高位双字
DWORD nFileSizeLow; //文件大小的低位双字
DWORD dwReserved0; //保留,为0
DWORD dwReserved1; //保留,为0
} FILE_INFO, * PFILE_INFO;
//获取文件的信息
WIN32_FIND_DATA ffd ;
HANDLE hFind = FindFirstFile(m_FileName,&ffd);
FindClose(hFind);
//保存文件的信息
FILE_INFO FileInfo;
memset(&FileInfo,0,sizeof(FILE_INFO));
//将文件属性信息保存到FileInfo中备用
strcpy(FileInfo.szFileTitle,ffd.cFileName);
FileInfo.dwFileAttributes = ffd.dwFileAttributes;
FileInfo.ftCreationTime = ffd.ftCreationTime;
FileInfo.ftLastAccessTime = ffd.ftLastAccessTime;
FileInfo.ftLastWriteTime = ffd.ftLastWriteTime;
FileInfo.nFileSizeHigh = ffd.nFileSizeHigh;
FileInfo.nFileSizeLow = ffd.nFileSizeLow;
//修改文件的生成日期信息
SYSTEMTIME time;
FILETIME t_ft;
FileTimeToSystemTime(&(ffd.ftCreationTime), &time);
time.wYear = 2000;
time.wMonth = 1;
time.wDay = 1;
time.wDayOfWeek = 6;
SystemTimeToFileTime(&time, &t_ft);
//把修改的日期写回文件
FileInfo.ftCreationTime = t_ft;
BOOL bResult ;
CFile file(m_FileName,CFile::modeWrite|CFile::typeBinary); //打开文件
bResult = SetFileTime((HANDLE)file.m_hFile, //待写入的文件句柄
&FileInfo.ftCreationTime, //文件的创建时间
&FileInfo.ftLastAccessTime, //文件最近一次的访问时间
&FileInfo.ftLastWriteTime); //文件最近一次的修改时间
if(!bResult)
{
DWORD dwErr = GetLastError();
}
//SetFileAttributes();
file.Close(); //关闭文件
}
void CModifyBINDlg::OnButton1()
{
// TODO: Add your control notification handler code here
//定义一个和文件信息兼容的结构,用于保存获取的信息
typedef struct _FILE_INFO {
TCHAR szFileTitle[128]; //文件的标题名
DWORD dwFileAttributes; //文件的属性
FILETIME ftCreationTime; //文件的创建时间
FILETIME ftLastAccessTime; //文件的最后访问时间
FILETIME ftLastWriteTime; //文件的最后修改时间
DWORD nFileSizeHigh; //文件大小的高位双字
DWORD nFileSizeLow; //文件大小的低位双字
DWORD dwReserved0; //保留,为0
DWORD dwReserved1; //保留,为0
} FILE_INFO, * PFILE_INFO;
//获取文件的信息
WIN32_FIND_DATA ffd ;
HANDLE hFind = FindFirstFile(m_FileName,&ffd);
FindClose(hFind);
//保存文件的信息
FILE_INFO FileInfo;
memset(&FileInfo,0,sizeof(FILE_INFO));
//将文件属性信息保存到FileInfo中备用
strcpy(FileInfo.szFileTitle,ffd.cFileName);
FileInfo.dwFileAttributes = ffd.dwFileAttributes;
FileInfo.ftCreationTime = ffd.ftCreationTime;
FileInfo.ftLastAccessTime = ffd.ftLastAccessTime;
FileInfo.ftLastWriteTime = ffd.ftLastWriteTime;
FileInfo.nFileSizeHigh = ffd.nFileSizeHigh;
FileInfo.nFileSizeLow = ffd.nFileSizeLow;
//修改文件的生成日期信息
SYSTEMTIME time;
FILETIME t_ft;
FileTimeToSystemTime(&(ffd.ftCreationTime), &time);
time.wYear = 2000;
time.wMonth = 1;
time.wDay = 1;
time.wDayOfWeek = 6;
SystemTimeToFileTime(&time, &t_ft);
//把修改的日期写回文件
FileInfo.ftCreationTime = t_ft;
BOOL bResult ;
CFile file(m_FileName,CFile::modeWrite|CFile::typeBinary); //打开文件
bResult = SetFileTime((HANDLE)file.m_hFile, //待写入的文件句柄
&FileInfo.ftCreationTime, //文件的创建时间
&FileInfo.ftLastAccessTime, //文件最近一次的访问时间
&FileInfo.ftLastWriteTime); //文件最近一次的修改时间
if(!bResult)
{
DWORD dwErr = GetLastError();
}
//SetFileAttributes();
file.Close(); //关闭文件
}
相关文章推荐
- Delphi中取得和设置硬盘上文件的创建日期、修改日期、访问日期、文件属性
- PHP中获取文件创建日期、修改日期、访问时间的方法
- C#-日期时间-轻松读取、改变文件的创建、修改、访问时间
- Windows平台上修改某个文件的创建、访问、修改日期时间属性
- linux 下文件的创建时间、访问时间、修改时间和改变时间
- php获取文件创建时间、修改时间、访问时间
- Linux目录与文件创建时间 / 修改时间 / 访问时间 / 指令 touch(鸟哥的Linux私房菜基础学习篇第三版-第七章)
- C# 获取文件的修改时间、访问时间、创建时间
- Web 在线文件管理器学习笔记与总结(2)显示文件列表(名称,类型,大小,可读,可写,可执行,创建时间,修改时间,访问时间)
- Delphi获取Excel文档创建、修改、访问的日期和时间
- VC ++实现 对文件的 隐藏, 只读 ,创建时间 , 最后修改时间 ,最后访问时间 属性的修改
- 用PowerShell删除N天前或指定日期(前后)创建(或修改)的文件
- C# 读取文件的修改时间、访问时间、创建时间
- 使用golang获取linux上文件的访问/创建/修改时间
- MFC中修改文件属性(包括文件创建时间、文件修改时间、文件访问时间、文件大小等)
- Delphi 得到文件创建时间、修改时间、访问时间
- Linux下对文件创建、修改、访问时间的一些操作
- 文件创建日期,修改日期修改程序
- 用批处理删除N天前或指定日期时间(前后)创建(或修改)的文件
- 设置文件属性里的时间,包括:创建时间、访问时间、修改时间