博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Algorithm: STD C++文件夹内容读取.
阅读量:7035 次
发布时间:2019-06-28

本文共 1782 字,大约阅读时间需要 5 分钟。

hot3.png

首先我们来看一个例子:

#include 
#include
//使用windows的api.#include
#include
#include
int main(){ std::string dir("F:\\*.mp4"); //指定文件夹. long handle; struct _finddata_t fileinfo; handle = _findfirst(dir.c_str(), &fileinfo); if(handle == -1){ std::cout<< "There is nothing in this dir" <

上面的例子:我们能够读取F盘目录下面的所有格式为mp4的文件.

其中需要注意的头文件 #include<io.h>, 以及3个函数:

_findfirst(const char* dir, struct _find_data_t* fileinfo);

_findnext(long, struct  _find_data_t* fileinfo);

_findclose(long);

上面的三个函数中的 long 没什么好说的了,我们着重说一下struct   _find_data_t:

struct   _find_data_t{

unsigned attribute;       //保存该文件的属性.

time_t     time_create;   //保存该文件被创建的时间.

time_t      time_access;  //保存该文件最后一次被访问的时间.

time_t      time_write;   //保存文件最后一次被修改的时间.

long         size;           //保存文件的尺寸.

char         file_name[MAX_SIZE];  //保存文件的名字.

};

unsigned attribute; 保存文件的属性,文件的属性是用位表示的主要有这些:

_A_ARCH(文档),  _A_HIDEN(隐藏), _A_NORMAL(正常),  _A_RDONLY(只读),  _A_SUBDIR(文件夹),  _A_SYSTEM(系统). 这些都是定义在 #include <io.h>中的可以被直接使用,本身的意义是一个无符号的整数类型(只不过这些整数类型都是 2 的几次幂,也可以理解为该属性是用 二进制表示的). 因此当一个文件有多重属性的时候我们就可以 通过 位与(&)位或(|)异或(^)来操作该文件的属性。比如最常用的: 只读+隐藏+系统属性,应该为:_A_HIDDEN | _A_RDONLY | _A_SYSTEM

time_t :是定义在头文件#include <ctime> 或者 #include<time.h> 的用于表示一个时间点的量.

 

long  _findfirst(const char* dir, struct  _find_data_t* fileinfo)

返回值: 该函数如果成功在指定的目录下 dir, 找到我们需要的文件将返回一个 long 的唯一的用于查找的句柄,该句柄被用于 _findnext()中,如果失败则返回: -1.

 参数: 

const char*  可以接受通配符, 比如我们上面写的 " *.mp4 ",指的是当前目录下所有的mp4文件, 比如" * "指的是当前目录下所有的文件对象.

fileinfo: 用来存放找到的文件的信息的结构体的指针.

 

int  _findnext(long handle,  struct _find_data_t* fileinfo)

返回值: 如果读取成功返回0, 失败返回1.

参数: 

handle,接受由 _findfirst()返回的句柄。

fileinfo, 文件信息的指针.

 

int  _findclose(long handle)

关闭当该文件夹内容的读取,如果成功返回0, 失败返回-1。

 

转载于:https://my.oschina.net/SHIHUAMarryMe/blog/700617

你可能感兴趣的文章
SVN相关命令
查看>>
记事本开发JAVA程序
查看>>
<td></td>标签的border 样式在浏览器中显示不出来
查看>>
递归计算全排列
查看>>
算法-贪心算法
查看>>
数据库(题附答案)
查看>>
指定字节拷贝文件
查看>>
android 按钮宽度按比例
查看>>
HY中考游记
查看>>
表空间与数据文件Offline,online的区别
查看>>
[Asp.net MVC]HandleErrorAttribute异常过滤器
查看>>
Linq之扩展方法
查看>>
oracle_使用udev绑定磁盘方法
查看>>
EXT编写日志文件
查看>>
SEO基础问题:12.关于外链你知道多少?
查看>>
0422-团队项目开发
查看>>
图例实解:C++中类的继承特性
查看>>
spring的IOC和AOP详细讲解
查看>>
程序员,背着屌丝的罪名.还要被人当作是修电脑的.
查看>>
走向高山
查看>>