[] 关于文件的创建时间
[求助] 关于文件的创建时间
遇到一个奇怪的东西. 不明白为什么会这样? 我用CFile :: modeCreate 创建了一个文件. 照理说这个文件的创建时间就是系统的当前的时间. 事实也是如此.
问题出在, 我随后拷贝了这个文件作为后备, 再 删除当前文件. 那么当我在下一刻( 例如下一个小时 ) 再次 创建同样的文件名时, 文件创建时间却依然是上一个小时而不是当前的. 为什么会这样?
CString path = "c:\\new.txt";
CString newPath = "c:\\backup.txt";
CString str;
CTime now = CTime::GetCurrentTime();
CFile f;
CString strCreateTime, strLastTime;
CFileStatus fstatus;
CFile::GetStatus(path,fstatus);
strCreateTime = fstatus.m_ctime.Format("%H");
strLastTime = fstatus.m_mtime.Format("%H");
if( strCreateTime.Compare( strLastTime ) != 0 )
{
CopyFile( path, newPath, false )
DeleteFile(path);
}
f.Open( path, CFile::modeCreate | CFile::modeWrite, NULL )
------解决方案--------------------
"在windows下 ,通过文件操作函数API DeleteFile进行文件的删除,删除1.txt ,然后马上再新建1.txt ,此时读取的创建的日期没有改变。。"
delete 就是目录名的 第一个字节 被 改成 E5, 马上再 Create 就是 把 E5 改回来。
这个 现象, 曾被 用来 , 作为 加密 手段。
你可以 rename 这个 文件 , 再 delete。
遇到一个奇怪的东西. 不明白为什么会这样? 我用CFile :: modeCreate 创建了一个文件. 照理说这个文件的创建时间就是系统的当前的时间. 事实也是如此.
问题出在, 我随后拷贝了这个文件作为后备, 再 删除当前文件. 那么当我在下一刻( 例如下一个小时 ) 再次 创建同样的文件名时, 文件创建时间却依然是上一个小时而不是当前的. 为什么会这样?
CString path = "c:\\new.txt";
CString newPath = "c:\\backup.txt";
CString str;
CTime now = CTime::GetCurrentTime();
CFile f;
CString strCreateTime, strLastTime;
CFileStatus fstatus;
CFile::GetStatus(path,fstatus);
strCreateTime = fstatus.m_ctime.Format("%H");
strLastTime = fstatus.m_mtime.Format("%H");
if( strCreateTime.Compare( strLastTime ) != 0 )
{
CopyFile( path, newPath, false )
DeleteFile(path);
}
f.Open( path, CFile::modeCreate | CFile::modeWrite, NULL )
------解决方案--------------------
"在windows下 ,通过文件操作函数API DeleteFile进行文件的删除,删除1.txt ,然后马上再新建1.txt ,此时读取的创建的日期没有改变。。"
delete 就是目录名的 第一个字节 被 改成 E5, 马上再 Create 就是 把 E5 改回来。
这个 现象, 曾被 用来 , 作为 加密 手段。
你可以 rename 这个 文件 , 再 delete。