C++遍历文件夹获取文件列表

本文实例类似遍历一个文件夹然后获得该文件夹下的文件列表,可以随意切换文件目录,本来是用在我们小组写的简易ftp服务器上的一个给客户端显示的一个小插件,总之单拿出来应该没啥含量,调用了windows的一些API。

实例代码:

#include<iostream>

#include<stdlib.h>

#include<windows.h>

#include<fstream>

#include<stdio.h>

#include<vector>

#include<string>

#pragma comment (lib, "winmm.lib")

using namespace std;

void MainMenu()

{

printf("请选择操作\n");

printf("1.显示当前文件夹的所有文件\n");

printf("2.返回上一级\n");

printf("3.进入文件夹\n");

printf("4.进入指定文件夹\n");

printf("5.退出\n");

}

void ShowFileList(string filename)

{

WIN32_FIND_DATAA p;

vector<string> filelist;

HANDLE h = FindFirstFileA(filename.c_str(), &p);

filelist.push_back(p.cFileName);

while (FindNextFileA(h, &p))

{

filelist.push_back(p.cFileName);

if (filelist.back() == "." || filelist.back() == "..")

{

filelist.pop_back();

}

}

for (int i = 0; i < filelist.size(); i++)

{

cout << filelist[i] << endl;

}

}

void ShowLastFileList(string & filepath)

{

string filepath2 = filepath;

string tmp = "../";

tmp += filepath2;

filepath = tmp;

ShowFileList(tmp);

}

void ShowSelectFileList(string filepath)

{

string yourchoose;

cin >> yourchoose;

yourchoose += '/';

string filepath2 = filepath;

yourchoose += filepath2;

ShowFileList(yourchoose);

}

void case4(string filepath)

{

string filename;

cin >> filename;

filename += '/';

filename += filepath;

ShowFileList(filename);

}

int main()

{

string filepath;

filepath = "*.*";

string filePath = filepath;

while (1)

{

system("CLS");

MainMenu();

int n;

cin >> n;

switch (n)

{

case 1:

system("CLS");

ShowFileList(filePath);

system("pause");

break;

case 2:

system("CLS");

ShowLastFileList(filePath);

system("pause");

break;

case 3:

system("CLS");

ShowSelectFileList(filePath);

system("pause");

break;

case 4:

system("CLS");

case4(filepath);

system("pause");

break;

case 5:

exit(0);

break;

default:

break;

}

}

return 0;

}

以上是 C++遍历文件夹获取文件列表 的全部内容, 来源链接: utcz.com/z/342860.html

回到顶部