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 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
| #include <iostream> #include <cstdio> #include <string>
using namespace std;
#include <windows.h> #include <winbase.h> // 在这里
int main() {
// HANDLE WINAPI FindFirstFile( // _In_ LPCTSTR lpFileName, // C风格字符串 名 // _Out_ LPWIN32_FIND_DATA lpFindFileData // 指向接收信息的结构体的指针 // );
// 关于返回值 // 成功, 则返回用来继续查找或者关闭用的句柄 // // 失败,则返回 INVALID_HANDLE_VALUE 并且结构体内容是不确定的 // 获取更多信息在 GetLastError 函数 // // 如果没有找到文件 GetLastError 函数会返回 ERROR_FILE_NOT_FOUND
// 关于第一个参数 // The directory or path, and the file name, which can include wildcard characters, // for example, an asterisk (*) or a question mark (?). // // This parameter should not be NULL, an invalid string // (for example, an empty string or a string that is missing the terminating null character), // or end in a trailing backslash (). // // If the string ends with a wildcard, period (.), // or directory name, // the user must have access permissions to the root and all subdirectories on the path. // // In the ANSI version of this function, the name is limited to MAX_PATH characters. // To extend this limit to 32,767 wide characters, // call the Unicode version of the function and prepend "\?" to the path.
// BOOL WINAPI FindNextFile( // _In_ HANDLE hFindFile, // 上一个函数的返回句柄 // _Out_ LPWIN32_FIND_DATA lpFindFileData // ); // 失败返回false【没有下一个??】 并且结构体返回内容不确定 // 具体失败信息查看 GetLastError
// BOOL WINAPI FindClose( // _Inout_ HANDLE hFindFile // 关闭句柄 // );
// 结构体内容 // typedef struct _WIN32_FIND_DATA { // DWORD dwFileAttributes; // FILETIME ftCreationTime; // FILETIME ftLastAccessTime; // FILETIME ftLastWriteTime; // DWORD nFileSizeHigh; // DWORD nFileSizeLow; // DWORD dwReserved0; // DWORD dwReserved1; // CHAR cFileName[MAX_PATH]; // CHAR cAlternateFileName[14]; // } WIN32_FIND_DATA, *PWIN32_FIND_DATA, *LPWIN32_FIND_DATA;
// DWORD WINAPI GetLastError(void); // 返回上一个错误代码
WIN32_FIND_DATA FindFileData; LPWIN32_FIND_DATA lpFindFileData = &FindFileData;
string path = ".\png\*.png";
HANDLE handle = FindFirstFile( path.c_str(), lpFindFileData );
if ( INVALID_HANDLE_VALUE == handle ) { cout << "INVALID_HANDLE_VALUE" << endl; cin.get(); return -1; }
do{ if ( !( lpFindFileData->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ) { cout << lpFindFileData->cFileName < < endl; } int t = GetLastError(); // cout << "GetLastError " << t << endl; if ( ERROR_FILE_NOT_FOUND == t ) { cout << "ERROR_FILE_NOT_FOUND" << endl; } }while ( FindNextFile( handle, lpFindFileData ) );
if ( !FindClose(handle) ) { cout << "CloseFail" << endl; return -1; }
cin.get();
return 0; }
|