请帮忙翻译几句c++的 语句 ,句柄什么的 完全 看不懂啊
charszFile[100];charszFind[MAX_PATH];WIN32_FIND_DATAFindFileData;//这里是什么意思memset(szFi...
char szFile[100];
char szFind[MAX_PATH];
WIN32_FIND_DATA FindFileData;//这里是什么意思
memset(szFile,0,100);
strcpy(szFind,lpPath);
strcat(szFind,"//*.*"); // 这里是什么意思
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);// 这里是什么意思
if(INVALID_HANDLE_VALUE == hFind) return 0; // 这里是什么意思
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // 这里是什么意思
if(FindFileData.cFileName[0]!='.') // 这里是什么意思 展开
char szFind[MAX_PATH];
WIN32_FIND_DATA FindFileData;//这里是什么意思
memset(szFile,0,100);
strcpy(szFind,lpPath);
strcat(szFind,"//*.*"); // 这里是什么意思
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);// 这里是什么意思
if(INVALID_HANDLE_VALUE == hFind) return 0; // 这里是什么意思
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // 这里是什么意思
if(FindFileData.cFileName[0]!='.') // 这里是什么意思 展开
3个回答
展开全部
WIN32_FIND_DATA 描述 查到的 文件的信息的结构体...........
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
.....
}
strcat(szFind,"//*.*"); // 字符串拼接函数 C语言没学好?
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);// 这里是什么意思
FindFirstFile函数 在一个目录查找文件名匹配指定名字的文件,它把子目录名也当做该目录下的文件名处理
The FindFirstFile function searches a directory for a file whose name matches the specified file name. FindFirstFile examines subdirectory names as well as file names.
HANDLE FindFirstFile(
LPCTSTR lpFileName, // 文件路径字符串 或路径的字符指针
LPWIN32_FIND_DATA lpFindFileData // 查到的 信息返回到这个指针指向的WIN32_FIND_DATA类型结构体变量中,所以传入了结构体变量的地址,&FindFileData
);
返回值 查找句柄 类似 fopen返回的文件句柄
fopen返回文件句柄 后续的文件读写fscanf、fprint利用文件句柄操作
同样 FindFirstFile 返回查找句柄 后续FindFirstFile查找 通过该句柄 操作........
If the function fails, the return value is INVALID_HANDLE_VALUE
如果返回值为宏常量 INVALID_HANDLE_VALUE 表示 FindFirstFile调用失败.......
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // 这里是什么意思
位运算 位与 c语言没学好?
FILE_ATTRIBUTE_DIRECTORY vc编辑器 选中 右键 转到定义/转到参考 vc自动帮你打开定为到 头文件里
或者cmd下 用finstr命令 查
以devcpp的头文件为例
C:\Documents and Settings\Administrator\桌面>cd c:\Dev-Cpp
C:\Dev-Cpp>cd include
C:\Dev-Cpp\include>findstr /n /s "FILE_ATTRIBUTE_ARCHIVE" *.h
winnt.h:240:#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
ddk\winddk.h:206:#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
C:\Dev-Cpp\include>
在devcpp的winnt.h中找到 一下几行
#define FILE_ATTRIBUTE_READONLY 0x00000001 标记只读位 32为整数的第1位
#define FILE_ATTRIBUTE_HIDDEN 0x00000002 标记隐藏位 32位整数的第2位
#define FILE_ATTRIBUTE_SYSTEM 0x00000004 系统属性 32为的第3位
#define FILE_ATTRIBUTE_DIRECTORY 0x00000010 文件夹 第5位
#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
#define FILE_ATTRIBUTE_DEVICE 0x00000040
#define FILE_ATTRIBUTE_NORMAL 0x00000080
假设 查到的第一个是 只读的隐藏的文件夹
dwFileAttributes的二进制值 就是
0000 0000, 0000 0000,0000 0000,0001 0011
FILE_ATTRIBUTE_DIRECTORY是0x00000010
二进制为
0000 0000, 0000 0000,0000 0000,0001 0000
上面两个二进制&一下结果是
0000 0000, 0000 0000,0000 0000,0001 0000
非零为真
如果“文件”实际是 文件夹
dwFileAttributes的第5位就不是1而是零
显然 & 后 就是 0x00000000 零值为假
这样就可判断 查到的“文件名”到底是文件还是文件夹(目录)
if(FindFileData.cFileName[0]!='.') // 这里是什么意思 点代表当前目录 点点代表上级目录
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
.....
}
strcat(szFind,"//*.*"); // 字符串拼接函数 C语言没学好?
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);// 这里是什么意思
FindFirstFile函数 在一个目录查找文件名匹配指定名字的文件,它把子目录名也当做该目录下的文件名处理
The FindFirstFile function searches a directory for a file whose name matches the specified file name. FindFirstFile examines subdirectory names as well as file names.
HANDLE FindFirstFile(
LPCTSTR lpFileName, // 文件路径字符串 或路径的字符指针
LPWIN32_FIND_DATA lpFindFileData // 查到的 信息返回到这个指针指向的WIN32_FIND_DATA类型结构体变量中,所以传入了结构体变量的地址,&FindFileData
);
返回值 查找句柄 类似 fopen返回的文件句柄
fopen返回文件句柄 后续的文件读写fscanf、fprint利用文件句柄操作
同样 FindFirstFile 返回查找句柄 后续FindFirstFile查找 通过该句柄 操作........
If the function fails, the return value is INVALID_HANDLE_VALUE
如果返回值为宏常量 INVALID_HANDLE_VALUE 表示 FindFirstFile调用失败.......
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // 这里是什么意思
位运算 位与 c语言没学好?
FILE_ATTRIBUTE_DIRECTORY vc编辑器 选中 右键 转到定义/转到参考 vc自动帮你打开定为到 头文件里
或者cmd下 用finstr命令 查
以devcpp的头文件为例
C:\Documents and Settings\Administrator\桌面>cd c:\Dev-Cpp
C:\Dev-Cpp>cd include
C:\Dev-Cpp\include>findstr /n /s "FILE_ATTRIBUTE_ARCHIVE" *.h
winnt.h:240:#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
ddk\winddk.h:206:#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
C:\Dev-Cpp\include>
在devcpp的winnt.h中找到 一下几行
#define FILE_ATTRIBUTE_READONLY 0x00000001 标记只读位 32为整数的第1位
#define FILE_ATTRIBUTE_HIDDEN 0x00000002 标记隐藏位 32位整数的第2位
#define FILE_ATTRIBUTE_SYSTEM 0x00000004 系统属性 32为的第3位
#define FILE_ATTRIBUTE_DIRECTORY 0x00000010 文件夹 第5位
#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
#define FILE_ATTRIBUTE_DEVICE 0x00000040
#define FILE_ATTRIBUTE_NORMAL 0x00000080
假设 查到的第一个是 只读的隐藏的文件夹
dwFileAttributes的二进制值 就是
0000 0000, 0000 0000,0000 0000,0001 0011
FILE_ATTRIBUTE_DIRECTORY是0x00000010
二进制为
0000 0000, 0000 0000,0000 0000,0001 0000
上面两个二进制&一下结果是
0000 0000, 0000 0000,0000 0000,0001 0000
非零为真
如果“文件”实际是 文件夹
dwFileAttributes的第5位就不是1而是零
显然 & 后 就是 0x00000000 零值为假
这样就可判断 查到的“文件名”到底是文件还是文件夹(目录)
if(FindFileData.cFileName[0]!='.') // 这里是什么意思 点代表当前目录 点点代表上级目录
展开全部
strcat(szFind,"//*.*"); // strcat是字符串连接,在szFind这个字符串后面加上"//*.*"
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);// 这个是调用全局API函数FindFirstFile按照szFind这个查找字符串查找第一个文件,把文件信息放到FindFileData这个结构体里,并且返回句柄
if(INVALID_HANDLE_VALUE == hFind) return 0; // 如果上面的函数返回的句柄不可用,那么退出函数并且返回0
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // 比较FindFileData这个结构体里获得的文件属性信息,与FILE_ATTRIBUTE_DIRECTORY这个值相与来判断是否是一个目录
if(FindFileData.cFileName[0]!='.') // 判断获得的这个文件名是不是“.",如果是"."实际上就是当前目录
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);// 这个是调用全局API函数FindFirstFile按照szFind这个查找字符串查找第一个文件,把文件信息放到FindFileData这个结构体里,并且返回句柄
if(INVALID_HANDLE_VALUE == hFind) return 0; // 如果上面的函数返回的句柄不可用,那么退出函数并且返回0
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // 比较FindFileData这个结构体里获得的文件属性信息,与FILE_ATTRIBUTE_DIRECTORY这个值相与来判断是否是一个目录
if(FindFileData.cFileName[0]!='.') // 判断获得的这个文件名是不是“.",如果是"."实际上就是当前目录
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
WIN32_FIND_DATA FindFileData;//这里是什么意思,定义WIN32_FIND_DATA类型的数据
strcat(szFind,"//*.*"); // 这里是什么意思,前后两个字符串连接在一起
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);// 这里是什么意思在目录里找第一个文件
if(INVALID_HANDLE_VALUE == hFind) return 0; // 这里是什么意思 如果没找到返回
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // 这里是什么意思 如果找到的是一个文件夹
if(FindFileData.cFileName[0]!='.') // 每个文件夹下都有个系统目录"..",这是为了过滤掉这个目录
strcat(szFind,"//*.*"); // 这里是什么意思,前后两个字符串连接在一起
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);// 这里是什么意思在目录里找第一个文件
if(INVALID_HANDLE_VALUE == hFind) return 0; // 这里是什么意思 如果没找到返回
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // 这里是什么意思 如果找到的是一个文件夹
if(FindFileData.cFileName[0]!='.') // 每个文件夹下都有个系统目录"..",这是为了过滤掉这个目录
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询