解决使用findnext相关函数在64位编译环境下遍历文件夹下的文件
来源:互联网 发布:淘宝店铺如何开 编辑:程序博客网 时间:2024/05/29 02:49
遍历文件夹下的特定文件,所有人都推荐使用 _findfirst 还有 _findnext来进行操作,不是很难,但是我的项目必须要在64位环境下编译,x64环境下编译的话, _findfirst 还有 _findnext 则不能使用,会报错。
在微软的网站上看到这样一些定义,觉得解决有望:
long _findfirst( char *filespec, struct _finddata_t *fileinfo );__int64 _findfirsti64( char *filespec, struct _finddata_t *fileinfo );
以为改一下函数名字就ok,谁知道fileinfo又会报错,开始的时候这部分我是无法理解的,形参都一样的,不应该报错,后来我又继续查找资料,得到了这些:
int _findnext32( intptr_t handle, struct _finddata32_t *fileinfo );int _findnext64( intptr_t handle, struct __finddata64_t *fileinfo );
啊啊,原来是fileinfo的类型也有所变化,同时相关的文件的句柄的类型也要有所变化,和64位相匹配,
我用的_int64 Handle;来申请的。
下面我复制我的一段代码,重点看一下其中 Handle、FileInfo两个变量的类型,还有_findfirst64、_findnext64两个函数的不同,其他部分与网上通用的,不区分32位和64位的函数一样使用:
//这段代码是VS2013环境下使用C++编程
//打印出目录下的所有后缀为jpg的文件名字,并统计图片数量
#include<io.h>#include<stdio.h>int main(){__int64 Handle;long jpg_num=0;struct __finddata64_t FileInfo;if ((Handle = _findfirst64("D:\\picture\\*.jpg", &FileInfo)) == -1L)printf("没有找到匹配的项目\n");else{printf("%s\n", FileInfo.name);while (_findnext64(Handle, &FileInfo) == 0){jpg_num++; printf("%s\n", FileInfo.name);}_findclose(Handle);}printf("%d\n", jpg_num);getchar();return 0;}
0 0
- 解决使用findnext相关函数在64位编译环境下遍历文件夹下的文件
- 解决使用findnext相关函数在64位编译环境下遍历文件夹下的文件
- 在VC环境下怎样遍历文件夹中的文件
- VC6.0编译环境下遍历文件夹的源代码
- Window环境下,编译64位的libevent库文件
- 遍历文件夹下的文件
- 64位开发环境下编译32位dll文件
- 64位开发环境下编译32位dll文件
- FindFirstFile、FindNext递归遍历硬盘的文件
- linux下遍历文件夹下的文件
- 遍历显示文件夹下所有目录、所有文件的函数
- 在64位的环境下编译32位的应用程
- 写了几个16位编译环境下64位计算的函数
- 1.0使用递归操作遍历文件夹下的所有文件
- Qt5.4.1 在Win7+MinGW-w64 v6.4.0环境下源码编译64位库文件
- 在windows 64位环境下编译pbc
- Delphi下的文件夹遍历函数
- 在VC环境下遍历文件夹中的文件:两种方法
- 4412出错内容
- eclipse debug F5 F6 快捷键失效
- 专题四 · 1002
- When running gradle with java 5, 6 or 7, you must set the path to jdk8, either with property retrola
- hadoop 第二节 单节点集群配置 Setting up a Single Node Cluster
- 解决使用findnext相关函数在64位编译环境下遍历文件夹下的文件
- (1)IP地址 : 网络号 + 主机号
- nginx配置
- Linux信号(signal) 机制分析
- csrf攻击
- android studio 的相关问题
- 消息提示类控件使用之Toast(吐司)的简单使用
- SurfaceView的应用
- Kubelet 源码走读(1)