How to set the modification time of a file programmatically?

后端 未结 5 609
余生分开走
余生分开走 2021-01-05 07:48

How do I set the modification time of a file programmatically in Windows?

相关标签:
5条回答
  • 2021-01-05 08:24

    See http://msdn.microsoft.com/en-us/library/aa365539%28VS.85%29.aspx

    0 讨论(0)
  • 2021-01-05 08:32

    Windows (or the standard CRT, anyhow) has the same utimes family of functions that UNIX has.

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

    Using Win32 functions, FILE_BASIC_INFO can be set using 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));
    
    0 讨论(0)
  • 2021-01-05 08:38

    Use SetFileInformationByHandle with FileInformationType as FILE_BASIC_INFO

    0 讨论(0)
  • 2021-01-05 08:48

    I found this to be useful on windows SetFileTime()

    0 讨论(0)
  • 2021-01-05 08:50

    From: 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;
    }
    
    0 讨论(0)
提交回复
热议问题