C/C++ Windows API——文件/文件夾創建、刪除、移動及查看時間

      網友投稿 1320 2025-03-31

      // FileOperationDemo.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include int main() { BOOL ret; LPCWSTR filePath1 = _T("C:\Users\Administrator\Desktop\file_demo_test1.txt"); LPCWSTR filePath2 = _T("C:\Users\Administrator\Desktop\file_demo_test2.txt"); LPCWSTR dirPath1 = _T("C:\Users\Administrator\Desktop\dir_demo_test1"); LPCWSTR dirPath2 = _T("C:\Users\Administrator\Desktop\dir_demo_test2"); /* 創建文件 HANDLE CreateFile( LPCTSTR lpFileName, //指向文件名的指針 DWORD dwDesiredAccess, //訪問模式(寫/讀), 如果為 GENERIC_READ 表示允許對設備進行讀訪問;如果為 GENERIC_WRITE 表示允許對設備進行寫訪問(可組合使用);如果為零,表示只允許獲取與一個設備有關的信息 DWORD dwShareMode, //共享模式, 0表示不共享; FILE_SHARE_READ 和/或 FILE_SHARE_WRITE 表示允許對文件進行共享訪問 LPSECURITY_ATTRIBUTES lpSecurityAttributes, //指向一個SECURITY_ATTRIBUTES安全屬性結構的指針,定義了文件的安全特性(如果操作系統支持的話),默認為0 DWORD dwCreationDisposition, //如何創建 DWORD dwFlagsAndAttributes, //文件屬性 HANDLE hTemplateFile //用于復制文件句柄, 如果不為零,則指定一個文件句柄。新文件將從這個文件中復制擴展屬性 ); dwDesiredAccess Long,下述常數之一: #define FILE_GENERIC_READ (STANDARD_RIGHTS_READ |\ FILE_READ_DATA |\ FILE_READ_ATTRIBUTES |\ FILE_READ_EA |\ SYNCHRONIZE) #define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE |\ FILE_WRITE_DATA |\ FILE_WRITE_ATTRIBUTES |\ FILE_WRITE_EA |\ FILE_APPEND_DATA |\ SYNCHRONIZE) #define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE |\ FILE_READ_ATTRIBUTES |\ FILE_EXECUTE |\ SYNCHRONIZE) dwCreationDisposition Long,下述常數之一: CREATE_NEW 創建文件;如文件存在則會出錯 CREATE_ALWAYS 創建文件,會改寫前一個文件 OPEN_EXISTING 文件必須已經存在。由設備提出要求 OPEN_ALWAYS 如文件不存在則創建它 TRUNCATE_EXISTING 將現有文件縮短為零長度 dwShareMode Long,下述常數之一: #define FILE_SHARE_READ 0x00000001 #define FILE_SHARE_WRITE 0x00000002 #define FILE_SHARE_DELETE 0x00000004 dwFlagsAndAttributes Long, 一個或多個下述常數 FILE_ATTRIBUTE_ARCHIVE 標記歸檔屬性 FILE_ATTRIBUTE_COMPRESSED 將文件標記為已壓縮,或者標記為文件在目錄中的默認壓縮方式 FILE_ATTRIBUTE_NORMAL 默認屬性 FILE_ATTRIBUTE_HIDDEN 隱藏文件或目錄 FILE_ATTRIBUTE_READONLY 文件為只讀 FILE_ATTRIBUTE_SYSTEM 文件為系統文件 FILE_FLAG_WRITE_THROUGH 操作系統不得推遲對文件的寫操作 FILE_FLAG_OVERLAPPED 允許對文件進行重疊操作 FILE_FLAG_NO_BUFFERING 禁止對文件進行緩沖處理。文件只能寫入磁盤卷的扇區塊 FILE_FLAG_RANDOM_ACCESS 針對隨機訪問對文件緩沖進行優化 FILE_FLAG_SEQUENTIAL_SCAN 針對連續訪問對文件緩沖進行優化 FILE_FLAG_DELETE_ON_CLOSE 關閉了上一次打開的句柄后,將文件刪除。特別適合臨時文件 */ DWORD dwDesiredAccess = GENERIC_READ | GENERIC_WRITE; DWORD dwShareMode = 0; LPSECURITY_ATTRIBUTES lpSecurityAttributes = 0; DWORD dwCreationDisposition = CREATE_NEW; DWORD dwFlagsAndAttributes = FILE_ATTRIBUTE_NORMAL; HANDLE hTemplateFile = 0; HANDLE handle = CreateFile(filePath1, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile); printf("CreateFile -> HANDLE=0x%x\n", (unsigned int)handle); if (handle != INVALID_HANDLE_VALUE) { FILETIME fCreationTime, fLastAccessTime, fLastWriteTime; // GetFileTime函數用來獲得一個文件或目錄的創建的時間、最后訪問的時間以及最后修改的時間 ret = GetFileTime(handle, &fCreationTime, &fLastAccessTime, &fLastWriteTime); if (ret == 0) { printf("GetFileTime fail(%d)\n", GetLastError()); } else { printf("GetFileTime -> %d\n", ret); } /* 根據一個FILETIME結構的內容,裝載一個SYSTEMTIME結構。 WINBASEAPI _Success_(return != FALSE) BOOL WINAPI FileTimeToSystemTime( _In_ CONST FILETIME * lpFileTime, _Out_ LPSYSTEMTIME lpSystemTime ); */ SYSTEMTIME sysCreationTime, sysLastAccessTime, sysLastWriteTime; ret = FileTimeToSystemTime(&fCreationTime, &sysCreationTime); if (ret == 0) { printf("FileTimeToSystemTime creationTime fail(%d)\n", GetLastError()); } else { printf("FileTimeToSystemTime creationTime -> %d\n", ret); printf("%4d年%2d月%2d日,%2d:%2d:%2d\n", sysCreationTime.wYear, sysCreationTime.wMonth, sysCreationTime.wDay, sysCreationTime.wHour, sysCreationTime.wMinute, sysCreationTime.wSecond); } ret = FileTimeToSystemTime(&fLastAccessTime, &sysLastAccessTime); if (ret == 0) { printf("FileTimeToSystemTime lastAccessTime fail(%d)\n", GetLastError()); } else { printf("FileTimeToSystemTime lastAccessTime -> %d\n", ret); printf("%4d年%2d月%2d日,%2d:%2d:%2d\n", sysLastAccessTime.wYear, sysLastAccessTime.wMonth, sysLastAccessTime.wDay, sysLastAccessTime.wHour, sysLastAccessTime.wMinute, sysLastAccessTime.wSecond); } ret = FileTimeToSystemTime(&fLastWriteTime, &sysLastWriteTime); if (ret == 0) { printf("FileTimeToSystemTime lastWriteTime fail(%d)\n", GetLastError()); } else { printf("FileTimeToSystemTime lastWriteTime -> %d\n", ret); printf("%4d年%2d月%2d日,%2d:%2d:%2d\n", sysLastWriteTime.wYear, sysLastWriteTime.wMonth, sysLastWriteTime.wDay, sysLastWriteTime.wHour, sysLastWriteTime.wMinute, sysLastWriteTime.wSecond); } //用完要記得關閉,否則其他操作會失敗,GetLastError()=32 => 進程無法訪問文件,因為另一個程序正在使用此文件。 CloseHandle(handle); } /* 復制文件 BOOL WINAPI CopyFile( _In_ LPCTSTR lpExistingFileName, _In_ LPCTSTR lpNewFileName, _In_ BOOL bFailIfExists ); return 失敗返回0,成功返回非0。 */ ret = CopyFile(filePath1, filePath2, true); if (ret == 0) { printf("CopyFile fail(%d)\n", GetLastError()); } else { printf("CopyFile -> %d\n", ret); } /* 刪除文件 BOOL DeleteFile( LPCSTRlpFileName//要刪除的文件名的指針 ); return 失敗返回0,成功返回非0。如果程序嘗試刪除一個不存在的文件。GetLastError返回ERROR_FILE_NOT_FOUND。如果文件是只讀 的,則GetLastError返回ERROR_ACCESS_DENIED */ ret = DeleteFile(filePath1); if (ret == 0) { printf("DeleteFile fail(%d)\n", GetLastError()); } else { printf("DeleteFile -> %d\n", ret); } /* 移動一個存在的文件或者目錄(包括子目錄) WINBASEAPI BOOL WINAPI MoveFileW( _In_ LPCWSTR lpExistingFileName, _In_ LPCWSTR lpNewFileName ); return 失敗返回0,成功返回非0。 */ ret = MoveFile(filePath2, filePath1); if (ret == 0) { printf("MoveFile fail(%d)\n", GetLastError()); } else { printf("MoveFile -> %d\n", ret); } /* WINBASEAPI DWORD WINAPI GetFileAttributesW( _In_ LPCWSTR lpFileName ); #define FILE_ATTRIBUTE_READONLY 0x00000001 #define FILE_ATTRIBUTE_HIDDEN 0x00000002 #define FILE_ATTRIBUTE_SYSTEM 0x00000004 #define FILE_ATTRIBUTE_DIRECTORY 0x00000010 #define FILE_ATTRIBUTE_ARCHIVE 0x00000020 #define FILE_ATTRIBUTE_DEVICE 0x00000040 #define FILE_ATTRIBUTE_NORMAL 0x00000080 #define FILE_ATTRIBUTE_TEMPORARY 0x00000100 #define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200 #define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 #define FILE_ATTRIBUTE_COMPRESSED 0x00000800 #define FILE_ATTRIBUTE_OFFLINE 0x00001000 #define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000 #define FILE_ATTRIBUTE_ENCRYPTED 0x00004000 #define FILE_ATTRIBUTE_INTEGRITY_STREAM 0x00008000 #define FILE_ATTRIBUTE_VIRTUAL 0x00010000 #define FILE_ATTRIBUTE_NO_SCRUB_DATA 0x00020000 #define FILE_ATTRIBUTE_EA 0x00040000 */ DWORD attr = GetFileAttributes(filePath1); if (attr == INVALID_FILE_ATTRIBUTES) { printf("GetFileAttributes fail(%d)", GetLastError()); } else { printf("GetFileAttributes -> 0x%x\n", attr); } DeleteFile(filePath1); /* 創建文件夾(注意: 目錄沒有復制操作) WINBASEAPI BOOL WINAPI CreateDirectoryW( _In_ LPCWSTR lpPathName, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes ); return 失敗返回0,成功返回非0。 */ ret = CreateDirectory(dirPath1, 0); if (ret == 0) { printf("CreateDirectory fail(%d)\n", GetLastError()); } else { printf("CreateDirectory -> %d\n", ret); } /* 刪除目錄(注意:目錄必須為空,否則會報145錯誤) WINBASEAPI BOOL WINAPI RemoveDirectoryW( _In_ LPCWSTR lpPathName ); */ ret = RemoveDirectory(dirPath1); if (ret == 0) { printf("RemoveDirectory fail(%d)\n", GetLastError()); } else { printf("RemoveDirectory -> %d\n", ret); } system("pause"); return 0; }


      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      C/C++ Windows API——文件/文件夾創建、刪除、移動及查看時間

      66

      67

      68

      69

      70

      71

      72

      73

      74

      75

      76

      77

      78

      79

      80

      81

      82

      83

      84

      85

      86

      87

      88

      89

      90

      91

      92

      93

      94

      95

      96

      97

      98

      99

      100

      101

      102

      103

      104

      105

      106

      107

      108

      109

      110

      111

      112

      113

      114

      115

      116

      117

      118

      119

      120

      121

      122

      123

      124

      125

      126

      127

      128

      129

      130

      131

      132

      133

      134

      135

      136

      137

      138

      139

      140

      141

      142

      143

      144

      145

      146

      147

      148

      149

      150

      151

      152

      153

      154

      155

      156

      157

      158

      159

      160

      161

      162

      163

      164

      165

      166

      167

      168

      169

      170

      171

      172

      173

      174

      175

      176

      177

      178

      179

      180

      181

      182

      183

      184

      185

      186

      187

      188

      189

      190

      191

      192

      193

      194

      195

      196

      197

      198

      199

      200

      201

      202

      203

      204

      205

      206

      207

      208

      209

      210

      211

      212

      213

      214

      215

      216

      217

      218

      219

      220

      221

      222

      223

      224

      225

      226

      227

      228

      229

      230

      231

      232

      233

      234

      235

      236

      237

      238

      239

      240

      241

      242

      API C++ Windows

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何使用wps文字制作三線表(wps文字三線表怎么做)
      下一篇:現金日記賬電子表格(現金日記賬電子表格式)
      相關文章
      国产一区二区三区亚洲综合| 亚洲欧美日韩综合久久久| 亚洲人成色在线观看| 亚洲最大黄色网站| 亚洲免费人成在线视频观看| JLZZJLZZ亚洲乱熟无码| 国内精品99亚洲免费高清| 亚洲中文字幕无码专区| 亚洲精品无码永久在线观看| 亚洲福利精品一区二区三区| yy6080久久亚洲精品| 国产亚洲蜜芽精品久久| 国产亚洲人成在线影院| 亚洲国产精品毛片av不卡在线| 亚洲国产一区明星换脸| 国产精品亚洲产品一区二区三区 | 人人狠狠综合久久亚洲高清| 久久亚洲欧美国产精品| 黑人粗长大战亚洲女2021国产精品成人免费视频| 一本色道久久综合亚洲精品蜜桃冫 | 亚洲AV日韩AV永久无码下载 | 亚洲色大网站WWW永久网站| 亚洲欧洲AV无码专区| 日日摸日日碰夜夜爽亚洲| 一本色道久久88亚洲综合| 亚洲国产综合久久天堂| 中文字幕亚洲无线码a| 亚洲综合图色40p| 亚洲成a人片在线观看日本| 亚洲av女电影网| 亚洲精品mv在线观看| 精品亚洲AV无码一区二区| 亚洲午夜无码久久久久小说 | 亚洲youwu永久无码精品| 在线播放亚洲精品| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 国产亚洲综合久久系列| 久久亚洲国产成人精品性色| 亚洲国产精品久久久久秋霞影院 | 亚洲精品国产品国语在线| 亚洲视频中文字幕|