如何使用 c++ 修改文本文件的 "Date modified" 属性而不影响内容?
How to modify a text file's "Date modified" property without affecting the content using c++?
我正在对我的一种方法进行单元测试。将文件选择到结果向量的方法的一个标准是文件从过去几个小时开始更新。但是,为了确保每次运行测试时都有有效的结果,我需要至少将其中一个文件保持"最新"。
除了尝试将文件复制到临时文件并将其写回原始文件之外,知道如何解决这个问题的任何想法?
编辑:我使用的是VS2013 C++,我的操作系统是Windows 7。
由于问题具有 c++ 标记并且您使用的是 Windows,因此您可以使用以下代码打开文件并更改其上次修改的属性:
HANDLE hFile = CreateFile("c:\test.txt", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(hFile != INVALID_FILE_HANDLE)
{
FILETIME filetime;
SYSTEMTIME systemfile;
GetSystemTime(&systemfile);
SystemTimeToFileTime(&systemfile, &filetime);
SetFileTime(hFile, NULL, NULL, &filetime);
CloseFile(hFile);
}
从代码
如果您需要从代码本身设置 if,请参阅 SuperUser 网站上的 Fredrik Mörk 的答案(接受的答案):
使用复制命令只更改Windows操作系统上文件的时间和日期
弗雷德里克·默克回答的文字副本:
如果您想自己编写代码,.NET 提供了File.SetLastAccessTime
、File.SetCreationTime
和File.SetLastWriteTime
方法。
从外部工具
如果您需要从外部工具(例如cmd.exe)进行设置,请参阅Gish Domains在SuperUser网站上的答案:
使用复制命令只更改Windows操作系统上文件的时间和日期
链接的文字副本:
如果要使用 windows 触摸文件的日期戳,请在命令提示符下使用以下命令:
copy /b filename.ext +,,
(其中文件名.ext是您的文件名称)。+,是一个特殊的标志,用于复制,告诉它简单地更新文件上的日期/时间:
- 更改文件的时间和日期
如果要在不修改文件的情况下为文件分配当前时间和日期,请使用以下语法:
copy /b Source+,,
逗号表示省略目标参数。
根据Lumi和Justin的评论进行编辑:将其放在批处理文件中,例如。 touch.cmd
@COPY /B %1+,, %1
即使文件不在当前目录中(在 Windows 7 上测试),这也有效。
要在几乎任何平台上将修改后的日期和时间更新为当前时间:
// #include <stdio.h>
FILE* pFile = fopen("filepath.txt", "ab");
if (pFile)
fclose(pFile);
或者,作为使用 STL 的单行
:// #include <fstream>
std::fstream("filepath.txt", std::ios::out | std::ios::app | std::ios::binary).close();
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- C++概念:如何使用'concept'检查模板化结构的属性?
- 子目录是否继承属性,例如add_definitions,include_directories和父Cmakelist.t
- 通过指向指针数组的指针访问子类的属性
- MSVC是否支持C++11样式的属性而不是__declspec
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 类的C++属性似乎已重新初始化
- Qt Quick-如何仅从c++代码与qml属性交互
- 用概念检查属性的类型
- C++如何将同一类的实例作为属性
- 为什么擦除方法会影响结束方法
- 内联如何影响模块接口中的成员函数
- 按多个属性排序
- 为什么返回类型的'const'限定符对标有 __forceinline/内联的函数没有影响?
- 主函数参数的属性
- "perf_event_attr"结构的"read_format"属性的选项到底是什么?
- 如何使用 c++ 修改文本文件的 "Date modified" 属性而不影响内容?
- 仅在错误的着色器程序中设置属性会影响属性值
- 类属性的顺序会影响对象的大小吗?