_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 月 1 日午夜,以及使用的函式的結束日期之前,可以變更日期的檔案。 _utime與_wutime使用 64 位元的時間值,因此在結束日期 23: 59: 59,3000 年 12 月 31 UTC。 如果_USE_32BIT_TIME_T定義要強制舊的行為,結束日期是 03: 14: 07 以後 2038 年 1 月 19 日,UTC。 _utime32或_wutime32使用 32 位元時間型別,不論是否_USE_32BIT_TIME_T定義,而且一定會較早的結束日期。 _utime64或_wutime64一直使用 64 位元時間類型而定,所以這些函式永遠會支援較新的結束日期。
備註
_utime函式會設定所指定的檔案的修改時間filename*.* 處理程序必須有檔案的寫入權限,若要變更的時間。 在 Windows 作業系統中,您可以變更存取及修改時間,在_utimbuf結構。 如果times是NULL指標,修改的時間設定為目前的當地時間。 否則, times型別的結構必須指向_utimbuf,已定義在 SYS\UTIME 中。H.
_utimbuf結構會儲存所使用的檔案存取和修改時間_utime若要變更檔案修改日期。 此結構有下列的欄位,都屬於型別time_t:
actime
檔案存取時間modtime
在檔案修改的時間
特定版本的_utimbuf結構 (_utimebuf32和__utimbuf64) 使用 32 位元和 64 位元版本的階段型別定義。 這些用在 32 位元與 64 位元特定版本之這個函式。 _utimbuf根據預設值本身會使用 64 位元階段型別,除非_USE_32BIT_TIME_T定義。
_utime是相同的_futime差異在於filename引數的_utime是檔名或路徑的檔案,而不是已開啟檔案的檔案描述項。
_wutime寬字元版本的_utime。 filename引數為_wutime是寬字元字串。 這些函式具有相同其他方式作業。
泛用文字常式對應
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。 如需詳細資訊,請參閱平台叫用範例。
請參閱
參考
ctime、 _ctime32、 _ctime64、 _wctime、 _wctime32、 _wctime64
_fstat、 _fstat32、 _fstat64、 _fstati64、 _fstat32i64、 _fstat64i32