转载:C++读取特定路径下文件目录及文件名称
转载地址:http://www.cnblogs.com/tgyf/p/3839894.html
void getAllFiles( string path, vector<string>& files)
{
//文件句柄
long hFile = ;
//文件信息
struct _finddata_t fileinfo; //很少用的文件信息读取结构
string p; //string类很有意思的一个赋值函数:assign(),有很多重载版本
if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -)
{
do
{
if((fileinfo.attrib & _A_SUBDIR)) //比较文件类型是否是文件夹
{
if(strcmp(fileinfo.name,".") != && strcmp(fileinfo.name,"..") != )
{
files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
getFilesall( p.assign(path).append("\\").append(fileinfo.name), files );
}
}
else
{
files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
}
}while(_findnext(hFile, &fileinfo) == ); //寻找下一个,成功返回0,否则-1
_findclose(hFile);
}
}
该函数有两个参数,第一个为路径字符串(string类型,最好为绝对路径);第二个参数为文件夹与文件名称存储变量(vector类型,引用传递)。在主函数中调用格式(并将结果保存在文件"AllFiles.txt"中,第一行为总数):
char * filePath = "E:\\YunShi";
vector<string> files;
char * distAll = "AllFiles.txt";
getFilesall(filePath, files);
ofstream ofn(distAll);
int size = files.size();
ofn<<size<<endl;
for (int i = ;i<size;i++)
{
ofn<<files[i]<<endl;
}
ofn.close();
结果如下:
同理,只读取某给定路径下的当前文件夹名(以下类似,只给出函数,调用案例同上):
void getJustCurrentDir( string path, vector<string>& files)
{
//文件句柄
long hFile = ;
//文件信息
struct _finddata_t fileinfo;
string p;
if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -)
{
do
{
if((fileinfo.attrib & _A_SUBDIR))
{
if(strcmp(fileinfo.name,".") != && strcmp(fileinfo.name,"..") != )
{
files.push_back(fileinfo.name);
//files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
} }
}while(_findnext(hFile, &fileinfo) == );
_findclose(hFile);
}
}
只读取某给定路径下的当前文件名:
void getJustCurrentFile( string path, vector<string>& files)
{
//文件句柄
long hFile = ;
//文件信息
struct _finddata_t fileinfo;
string p;
if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -)
{
do
{
if((fileinfo.attrib & _A_SUBDIR))
{
;
}
else
{
files.push_back(fileinfo.name);
//files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
}
}while(_findnext(hFile, &fileinfo) == );
_findclose(hFile);
}
}
只读取某给定路径下的所有文件名(即包含当前目录及子目录的文件):
void getFilesAll( string path, vector<string>& files)
{
//文件句柄
long hFile = ;
//文件信息
struct _finddata_t fileinfo;
string p;
if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -)
{
do
{
if((fileinfo.attrib & _A_SUBDIR))
{
if(strcmp(fileinfo.name,".") != && strcmp(fileinfo.name,"..") != )
{
//files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
getFilesAll( p.assign(path).append("\\").append(fileinfo.name), files );
}
}
else
{
files.push_back(p.assign(path).append("\\").append(fileinfo.name) ); //若不需要路径可改为files.push_back(fileinfo.name)
}
}while(_findnext(hFile, &fileinfo) == );
_findclose(hFile);
}
}
至此,简单的读取功能就实现了,以后只要指定路径,就能轻松地得到对应的路径与文件名称。
转载:C++读取特定路径下文件目录及文件名称的更多相关文章
- C++读取特定路径下文件目录及文件名称
这几天在弄一个项目,需要读取给定路径下的所有文件夹名称或所有带后缀的文件名. 查了下C++的资料,发现有很多方法,这里总结其中的一种,其他用法类似. 主要用到了以下几个头文件(类):io.h, fst ...
- java通过文件路径读取该路径下的所有文件并将其放入list中
java通过文件路径读取该路径下的所有文件并将其放入list中 java中可以通过递归的方式获取指定路径下的所有文件并将其放入List集合中.假设指定路径为path,目标集合为fileList,遍 ...
- unity3d 依据指定的Assets下的目录路径 返回这个路径下的全部文件名称
using UnityEngine; using System.Collections; using System.Collections.Generic; using System.IO; < ...
- 封装的方法--读取任何路径下的properties文件中的值
概述:我们在做项目时,经常需要从某个properties文件中读取properties文件中的值.现在我封装了一下方法,直接读取配置文件中的值. 代码如下所示: /** * Created by qi ...
- java读取项目路径下的中文文件乱码问题
出现乱码错误: 处理方案: 对文件路径中存在中文的,都要进行URLDecoder.decode(path,"UTF-8")编码转换 wordContent = URLEncoder ...
- matlab读取指定路径下的图像
利用matlab读取指定路径下的图像 %% 读入指定路径imgFolder下的图像imgName imgFolder = 'F:\博\快盘\图像+数据\images\文章实验图'; %指定路径 img ...
- [转]读取assets目录下的数据库文件
在做Android应用的时候,不可避免要用到数据库.但是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客解决了我前面博客中 ...
- 读取web应用下的资源文件(例如properties)
package gz.itcast.b_resource; import java.io.IOException; import java.io.InputStream; import java.ut ...
- python之实现循环查看指定路径下的所有文件---os.walk
循环查看指定路径下的所有文件.文件夹,包含隐藏文件注:“.filename” 以点开头的是隐藏文件 import os for cur_path,cur_dirs,cur_files in os.wa ...
随机推荐
- NBUT 1117 Kotiya's Incantation(字符输入处理)
题意: 比较两个串,有三种情况:完全相同,可见字符相同,不同.每个字符串以'-'结尾.难点在输入. 思路: 字符逐个读入,直到'-'为止,读出两串就可以直接进行判断.如果不足两串则结束.输入时需要注意 ...
- ImportError: No module named flask.ext.wtf 解决方法
install pip install flask.ext.wtf
- pytorch中的view
https://ptorch.com/news/59.html view()相当于reshape(),其中参数若为-1表示当前的size根据其余size推断
- Vue之父子组件的通信
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- $Codeforces\; Round\; 504\; (Div.2)$
宾馆的\(\rm{wifi}\)也太不好了,蹭的\(ZZC\)的热点才打的比赛(感谢\(ZZC\)) 日常掉rating-- 我现在是个\(\color{green}{pupil}\)-- 因为我菜, ...
- MAC实现睡眠和休眠唤醒
因为苹果默认为休眠文件加密,Clover 是无法解密的.所以需要经过一些设置才能破除这无节操的加密文件sleepimage.在这之前不得不提下EmuVariableUefi-64.efi 这个驱动.我 ...
- PAT 乙级 1013
题目 题目地址:PAT 乙级 1013 思路 审题没把范围看清楚,没一次AC 题中m和n都表示第几个素数,范围是10000,所以查询的数组中需要的素数量至少10000,所以需要计算大概2~120000 ...
- (17)zabbix自定义用户key与参数User parameters
为什么要自定义KEY 有时候我们想让被监控端执行一个zabbix没有预定义的检测,zabbix的用户自定义参数功能提供了这个方法. 我们可以在客户端配置文件zabbix_angentd.conf里面配 ...
- lsof指令使用简介
lsof替代了netstat和ps的全部工作.它可以带来那些工具所能带来的一切,而且要比那些工具多得多 最重要的是,当你给它传递选项时,默认行为是对结果进行“或”运算.因此,如果是用-i来拉出一个端口 ...
- MySQL之单表查询、多表查询
一.单表查询: 单个表的查询方法及语法顺序需要通过实际例子来熟悉 先将表数据创建下: mysql> create database singe_t1; # 建个数据库singe_t1 Query ...