_utime, _utime32 _utime64, _wutime, _wutime32, _wutime64

设置文件修改时间。

int _utime(
   const char *filename,
   struct _utimbuf *times 
);
int _utime32(
   const char *filename,
   struct __utimbuf32 *times 
);
int _utime64(
   const char *filename,
   struct __utimbuf64 *times 
);
int _wutime(
   const wchar_t *filename,
   struct _utimbuf *times 
);
int _wutime32(
   const wchar_t *filename,
   struct __utimbuf32 *times 
);
int _wutime64(
   const wchar_t *filename,
   struct __utimbuf64 *times 
);

参数

  • filename
    为包含个路径或文件名的字符串的指针。

  • times
    对存储的时间值的指针。

返回值

,如果更改了,这些功能中的每种方法都返回 0 文件修改时间。 返回值 – 1 指示错误。 如果一个传递的参数无效,无效参数调用处理程序,如 参数验证所述。 如果执行允许继续,这些函数返回 -1,并 errno 设置为下列值之一:

  • EACCES
    路径指定目录或只读文件

  • EINVAL
    无效 times 参数

  • EMFILE
    许多打开文件 (必须打开文件更改其修改时间)

  • ENOENT
    未找到的路径或文件名

请参见 _doserrno、 errno、 _sys_errlist 和 _sys_nerr 有关这些内容的更多信息以及其他,返回代码。

该日期可以更改用于文件,如果更改日期在午夜, 1970 年一月 1 日之后但在使用的函数结束日期之前。 _utime 和 _wutime 使用 64 位时间值,因此,结束日期为 23:59: 59, 3000 年十二月 31 日,, UTC。 如果 _USE_32BIT_TIME_T 定义强制旧行为,结束日期为 03:14: 一月 07 日 19 日 2038 中, UTC。 _utime32 或 _wutime32 使用 32 位时类型 _USE_32BIT_TIME_T 无论是否定义,并始终具有早期结束日期。 _utime64 或始终 _wutime64 使用 64 位时类型,因此,这些函数始终支持最新结束日期。

备注

_utime 功能集 filename指定文件的修改时间*。*进程必须具有写入文件来更改时。 在 windows 操作系统中,可以更改访问时间和修改时在 _utimbuf 结构。 如果 times 是 NULL 指针,修改时设置为当前本地时间。 否则, times 必须指向类型 _utimbuf结构,定义在 SYS \UTIME.H。

_utime 使用的 _utimbuf 结构存储文件访问和修改时间更改文件的修改日期。 结构具有下列字段,分别为两种类型 time_t:

  • actime
    文件访问时间

  • modtime
    修改文件的时间

_utimbuf framework 的特定版本 (_utimebuf32 和 __utimbuf64) 使用时类型, 32 位和 64 位版本的定义。 这些用于此功能的 32 位和 64位特定版本。 ,除非 _USE_32BIT_TIME_T 定义,默认情况下_utimbuf 使用 64 位时类型。

_utime 与 _futime 与相同,但 _utime 的 filename 参数是文件名或文件的路径,而不是打开文件的描述符。

_wutime 是 _utime的宽字符版本;为 _wutime 的 filename 参数是宽字符字符串。 这些功能否则具有相同的行为。

一般文本例程映射

TCHAR.H 实例

未定义的 _UNICODE _MBCS

定义的 _MBCS

定义的 _UNICODE

_tutime

_utime

_utime

_wutime

_tutime32

_utime32

_utime32

_wutime32

_tutime64

_utime64

_utime64

_wutime64

要求

实例

必需的头

可选标头

_utime, _utime32, _utime64

sys/utime.h

errno.h

_utime64

sys/utime.h

errno.h

_wutime

utime.h 或 wchar.h

errno.h

有关其他的兼容性信息,请参见中介绍的 兼容性

示例

此过程使用 _utime 设置文件修改时间。当前时间。

// crt_utime.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/utime.h>
#include <time.h>

int main( void )
{
   struct tm tma = {0}, tmm = {0};
   struct _utimbuf ut;

   // Fill out the accessed time structure
   tma.tm_hour = 12;
   tma.tm_isdst = 0;
   tma.tm_mday = 15;
   tma.tm_min = 0;
   tma.tm_mon = 0;
   tma.tm_sec = 0;
   tma.tm_year = 103;

   // Fill out the modified time structure
   tmm.tm_hour = 12;
   tmm.tm_isdst = 0;
   tmm.tm_mday = 15;
   tmm.tm_min = 0;
   tmm.tm_mon = 0;
   tmm.tm_sec = 0;
   tmm.tm_year = 102;

   // Convert tm to time_t
   ut.actime = mktime(&tma);
   ut.modtime = mktime(&tmm);

   // Show file time before and after
   system( "dir crt_utime.c" );
   if( _utime( "crt_utime.c", &ut ) == -1 )
      perror( "_utime failed\n" );
   else
      printf( "File time modified\n" );
   system( "dir crt_utime.c" );
}

示例输出

Volume in drive C has no label.
 Volume Serial Number is 9CAC-DE74

 Directory of C:\test

01/09/2003  05:38 PM               935 crt_utime.c
               1 File(s)            935 bytes
               0 Dir(s)  20,742,955,008 bytes free
File time modified
 Volume in drive C has no label.
 Volume Serial Number is 9CAC-DE74

 Directory of C:\test

01/15/2002  12:00 PM               935 crt_utime.c
               1 File(s)            935 bytes
               0 Dir(s)  20,742,955,008 bytes free

.NET Framework 等效项

不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见 平台调用示例

请参见

参考

时间线

asctime, _wasctime

ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64

_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32

_ftime, _ftime32, _ftime64

_futime, _futime32, _futime64

gmtime, _gmtime32, _gmtime64

localtime, _localtime32, _localtime64

_stat, _wstat功能

time, _time32, _time64