C++实现读取特定路径下文件夹及文件名的方法

本文所述实例代码主要实现读取给定路径下的所有文件夹名称或所有带后缀的文件名的功能。具体解决方法如下:
 
主要用到了以下几个头文件(类):io.h, fstream, string。
 
首先,读取某给定路径下所有文件夹与文件名称,并带完整路径。实现代码如下:

 void getAllFiles( string path, vector<string>& files)
 {
   //文件句柄
   long  hFile  =  0;
   //文件信息
   struct _finddata_t fileinfo;
   string p;
   if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -1)
   {
     do
     {
       if((fileinfo.attrib & _A_SUBDIR))
       {
         if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0)
         {
          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);
     _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 = 0;i<size;i++)
 {
   ofn<<files[i]<<endl;
 }
 ofn.close();

同理,只读取某给定路径下的当前文件夹名(以下类似,只给出函数,调用案例同上):

void getJustCurrentDir( string path, vector<string>& files)
 {
   //文件句柄
   long  hFile  =  0;
  //文件信息
   struct _finddata_t fileinfo;
   string p;
   if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -1)
   {
     do
     {
       if((fileinfo.attrib & _A_SUBDIR))
       {
         if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0)
         {
           files.push_back(fileinfo.name);
           //files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
         }

       }
     }while(_findnext(hFile, &fileinfo) == 0);
     _findclose(hFile);
   }
 }

只读取某给定路径下的当前文件名:

 void getJustCurrentFile( string path, vector<string>& files)
 {
   //文件句柄
   long  hFile  =  0;
   //文件信息
   struct _finddata_t fileinfo;
   string p;
   if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -1)
   {
     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) == 0);
     _findclose(hFile);
   }
 }

只读取某给定路径下的所有文件名(即包含当前目录及子目录的文件):

void getFilesAll( string path, vector<string>& files)
 {
   //文件句柄
   long  hFile  =  0;
   //文件信息
   struct _finddata_t fileinfo;
   string p;
   if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -1)
   {
     do
     {
       if((fileinfo.attrib & _A_SUBDIR))
       {
         if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0)
         {
           //files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
           getFilesA( p.assign(path).append("\\").append(fileinfo.name), files );
         }
       }
       else
       {
         files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
       }
     }while(_findnext(hFile, &fileinfo) == 0);
     _findclose(hFile);
   }
 } 
(0)

相关推荐

  • C++用Dijkstra(迪杰斯特拉)算法求最短路径

    算法介绍 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题.迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低. 算法思想 按路径长度递增次序产生算法: 把顶点集合V分成两组: (1)S:已求出的顶点的集合(初始时只含有源点V0) (2)V-S=T:尚未确定的顶点集合 将T中顶点按递增

  • C\C++ 获取当前路径实例详解

    C\C++ 获取当前路径实例详解 获取当前工作目录是使用函数:getcwd.cwd指的是"current working directory",这样就好记忆了. 函数说明: 函数原型:char* getcwd(char* buffer, int len);     参数:buffer是指将当前工作目录的绝对路径copy到buffer所指的内存空间, len是buffer的长度.     返回值:获取成功则返回当前工作目录(绝对路径),失败则返回false(即NULL).     该函数

  • C++实现查找二叉树中和为某一值的所有路径的示例

    从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径. 打印出和与输入整数相等的所有路径. 例如 输入整数22和如下二元树 则打印出两条路径:10, 12和10, 5, 7. 先序遍历树即可得到结果. 算法: FindPath(BTree * root,int sum,int target,Stack * s) 用来计算,sum为栈中的元素的和,target为目标值. 到达一个节点之后计算当前节点和sum的和,如果为target,输出路径返回,如果大于target,则直接返回,如果小

  • c++查询最短路径示例

    复制代码 代码如下: //shortest_path.c#include<stdio.h>#include<stdlib.h>//用file#include<string.h>//可用gets(),puts()#include"shortest_path.h"#define MAX 32767#define MENU "欢迎进入导航系统!\n==========菜单===========\n0.载入北外地图\n1.建立地图\n2.查询最短路

  • linux C++ 获取文件绝对路径的实例代码

    提供ftp服务时需要获取文件绝对路径,这里记录一下. #include <stdlib.h> #include <stdio.h> #include <limits.h> int main(){ const char *file_name = "filename"; char abs_path_buff[PATH_MAX]; //获取文件路径, 填充到abs_path_buff //realpath函数返回: null表示获取失败; 否则返回指向ab

  • C++实现读取特定路径下文件夹及文件名的方法

    本文所述实例代码主要实现读取给定路径下的所有文件夹名称或所有带后缀的文件名的功能.具体解决方法如下:   主要用到了以下几个头文件(类):io.h, fstream, string.   首先,读取某给定路径下所有文件夹与文件名称,并带完整路径.实现代码如下: void getAllFiles( string path, vector<string>& files) { //文件句柄 long hFile = 0; //文件信息 struct _finddata_t fileinfo;

  • R语言批量读取某路径下文件内容的方法

    R刚入门的时候,能够正确读取单个文件就觉得小有成就,随着时间的积累,单一文件地读取已经不能满足需求了,此时,批量地做就是解放双手地过程. 使用for循环把下载地TCGA数据读入R语言并转换成数据框 使用三个for循环来完成,这是第一个for循环. 1. 把所有数据读入在一个文件夹中 dir.create("data_in_one") #创建目标文件夹,也可右键创建 dir("rawdata/") #查看原路径的内容 for (dirname in dir("

  • 新版php study根目录下文件夹无法显示的图文解决方法

     Options Indexes FollowSymLinks ExecCGI          1  添加Indexes 2  删除掉index.html    希望可以帮到大家.      到此这篇关于新版php study根目录下文件夹无法显示解决方法的文章就介绍到这了,更多相关php study根目录文件夹无法显示内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

  • Python 实现删除某路径下文件及文件夹的实例讲解

    Python 实现删除某路径下文件及文件夹的脚本 #!/usr/bin/env python import os import shutil delList = [] delDir = "/home/test" delList = os.listdir(delDir ) for f in delList: filePath = os.path.join( delDir, f ) if os.path.isfile(filePath): os.remove(filePath) print

  • Java 读取类路径下的资源文件实现代码

    Java 读取类路径下的资源文件实现代码 一.工具类代码ResourceLoadUtil.java import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; public class ResourceLoadUtil { /** * @par

  • C#使用浏览按钮获得文件路径和文件夹路径的方法

    本文实例讲述了C#使用浏览按钮获得文件路径和文件夹路径的方法.分享给大家供大家参考,具体如下: 生成文件夹路径 private void btnChoose_Click(object sender, EventArgs e) { using (OpenFileDialog dialog = new OpenFileDialog()) { dialog.Multiselect = true; if (dialog.ShowDialog() == DialogResult.OK) { try { t

  • java读取resource目录下文件的方法示例

    本文主要介绍的是java读取resource目录下文件的方法,比如这是你的src目录的结构 ├── main │ ├── java │ │ └── com │ │ └── test │ │ └── core │ │ ├── bean │ │ ├── Test.java │ └── resources │ └── test │ ├── test.txt └── test └── java 我们希望在Test.java中读取test.txt文件中的内容,那么我们可以借助Guava库的Resource

  • Asp.Net程序目录下文件夹或文件操作导致Session失效的解决方案

    1.配置web.config <system.web> <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="

  • Node.js查找当前目录下文件夹实例代码

    整理文档,搜刮出Node.js查找当前目录下文件夹实例代码,稍微整理精简一下做下分享. var http = require("http"); var fs = require("fs"); var server = http.createServer(function (req,res) { //不处理收藏夹小图标 if(req.url == "/favicon.ico"){ return; } //files是文件名的数组 表示text这个文

  • springboot打成jar后无法读取根路径和文件的解决

    目录 springboot打成jar后无法读取根路径和文件 springboot打jar找不到资源文件 springboot打成jar后无法读取根路径和文件 ClassLoader.getSystemResourceAsStream(authenticationFileName) PropertiesUtils.class.getClass().getResourceAsStream("/authentication.properties") 未打包时都可以获取到根路径和文件 打包后报

随机推荐