2010-02-02 4 views

Respuesta

7

Windows (o el CRT estándar, de todos modos) tiene el mismo utimes familia de funciones que UNIX tiene.

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

Uso de funciones de Win32, FILE_BASIC_INFO se puede establecer utilizando 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

por lo que entiendo _tiempo en Windows no funciona para directorios, porque no son tratados como archivos en Windows –

2

Uso SetFileInformationByHandle con FileInformationType como FILE_BASIC_INFO

+1

incluyendo una breve ejemplo de código puedan ser de utilidad. – bobbymcr

+0

@bobbymcr, y en realidad tratar de encontrar la información y luego codificarla ellos mismos podría ser más beneficioso que esperar que alguien más haga todo el trabajo. – Lazarus

13

Desde: 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

Su variable mtime no se usa, pero de lo contrario es una gran respuesta. –

Cuestiones relacionadas