2010-02-02 7 views

Antwort

7

Fenster (oder dem Standard-CRT, jedenfalls) die gleiche utimes Familie von Funktionen, die UNIX hat.

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

Mit Win32-Funktionen, FILE_BASIC_INFO können mit SetFileInformationByHandle eingestellt werden.

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

soweit ich verstehe _utime auf Windows funktioniert nicht für Verzeichnisse, weil sie nicht als Dateien unter Windows behandelt werden –

2

Verwenden SetFileInformationByHandle mit FileInformationType als FILE_BASIC_INFO

+1

einschließlich einer kurzen Codebeispiel auf Fenster nützlich sein könnte hilfreich sein. – bobbymcr

+0

@bobbymcr, und tatsächlich versuchen, die Informationen zu finden und dann selbst zu codieren, könnte vorteilhafter sein, als zu erwarten, dass jemand anderes die ganze Arbeit macht. – Lazarus

13

Von: 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; 
} 
+1

Ihre Variable mtime ist ungenutzt, aber ansonsten eine gute Antwort. –

Verwandte Themen