Как установить время модификации файла программно? - PullRequest
7 голосов
/ 02 февраля 2010

Как установить время модификации файла программно в Windows?

Ответы [ 5 ]

13 голосов
/ 02 февраля 2010

От: http://rosettacode.org/wiki/File/Modification_Time#C

#include <time.h>
#include <utime.h>
#include <sys/stat.h>

const char *filename = "input.txt";

int main() {
  struct stat foo;
  time_t mtime;
  struct utimbuf new_times;

  stat(filename, &foo);
  mtime = foo.st_mtime; /* seconds since the epoch */

  new_times.actime = foo.st_atime; /* keep atime unchanged */
  new_times.modtime = time(NULL);    /* set mtime to current time */
  utime(filename, &new_times);

  return 0;
}
7 голосов
/ 02 февраля 2010

Windows (или стандартная CRT, во всяком случае) имеет то же семейство функций utimes , что и в UNIX.

struct _utimebuf t;
t.tma = 1265140799;  // party like it's 1999
t.tmm = 1265140799;
_utime(fn, &t);

Используя функции Win32, FILE_BASIC_INFO можно установить с помощью SetFileInformationByHandle .

FILE_BASIC_INFO b;
b.CreationTime.QuadPart = 1265140799;
b.LastAccessTime.QuadPart = 1265140799;
b.LastWriteTime.QuadPart = 1265140799;
b.ChangeTime.QuadPart = 1265140799;
b.FileAttributes = GetFileAttributes(fn);
SetFileInformationByHandle(h, FileBasicInfo, &b, sizeof(b));
2 голосов
/ 02 февраля 2010

Использовать SetFileInformationByHandle с FileInformationType как FILE_BASIC_INFO

1 голос
/ 23 февраля 2015

Я нашел это полезным для Windows SetFileTime ()

0 голосов
/ 02 февраля 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...