////////////////////////////////////////////////////
//获取目录路径下面所有文件的内容
//适用于linux和windows系统
////////////////////////////////////////////////////
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#ifdef _WIN32
#include <Windows.h>
#include <strsafe.h>
#else
#include <dirent.h>
#endif
using namespace std;
//////////////////////////////////////////////////////////////////////////
//获取指定目录下所有文件的文件名,不包括文件夹,在GetFileFromDir中使用
//strDir: 输入,目录路径
//vFileDirList: 输出,文件路径列表
//返回:空
//////////////////////////////////////////////////////////////////////////
void GetFileNameFromDir(string strDir,vector<string>& vFileDirList)
{
#ifdef _WIN32
WIN32_FIND_DATAA ffd;
LARGE_INTEGER filesize;
string szDir;
//size_t length_of_arg;
HANDLE hFind = INVALID_HANDLE_VALUE;
DWORD dwError=0;
szDir=strDir+"\\*";
hFind = FindFirstFileA(szDir.c_str(), &ffd);
if (INVALID_HANDLE_VALUE == hFind)
{
cout<<"get file name error"<<endl;
return;
}
do
{
if (!(ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
string filename=ffd.cFileName;//(const char*)
string filedir=strDir+"\\"+filename;
vFileDirList.push_back(filedir);
}
}while (FindNextFileA(hFind, &ffd) != 0);
dwError = GetLastError();
if (dwError != ERROR_NO_MORE_FILES)
{
cout<<"FindFirstFile error"<<endl;
return;
}
FindClose(hFind);
#else
DIR *dir;
struct dirent *ptr;
dir = opendir(strDir.c_str());
while( (ptr = readdir(dir)) != NULL)
{
string path = strDir + string("/") + string(ptr->d_name);
vFileDirList.push_back(path);
}
closedir(dir);
sort(vFileDirList.begin(), vFileDirList.end());
#endif
}
//////////////////////////////////////////////////////////////////////////
//获取指定目录下所有文件内容
//strDir: 输入,目录路径
//vFileNameList: 输出,文件内容列表
//返回:空
//////////////////////////////////////////////////////////////////////////
void GetFileFromDir(string strDir,vector<string>& vFileList)
{
//获取目录路径下所有文件的文件名
vector<string> vFileDirList;
GetFileNameFromDir(strDir,vFileDirList);
//读取文件
vector<string>::iterator iterFileDir;
for (iterFileDir=vFileDirList.begin();iterFileDir!=vFileDirList.end();iterFileDir++)
{
ifstream infile((*iterFileDir).c_str());
if (!infile)
{
cout<<"read file error"<<endl;
return;
}
string line="";
string file="";
while (getline(infile,line))
{
file+=line;
}
vFileList.push_back(file);
}
}
int main(int argc,char* argv[])
{
if (argc!=2)
{
cout<<"paramater error"<<endl;
return -1;
}
else
{
string dir(argv[1]);
vector<string> files;
GetFileFromDir(dir,files);
vector<string>::iterator iterFile;
for (iterFile=files.begin();iterFile!=files.end();iterFile++)
{
cout<<*iterFile<<endl;
}
cout<<endl;
system("pause");
return 0;
}
}
相关推荐
这是一个用于获取指定目录下所有文件的信息的C++代码, 是用于linux系统的
- **获取目录列表**:调用`curl_easy_perform`执行FTP命令`LIST`,这会返回服务器目录的详细信息。解析返回的数据以获取文件和子目录的列表。可以使用正则表达式或者自定义解析函数来处理服务器返回的ASCII格式的...
网上关于C++获取当前EXE文件路径的解决方案很多是错的,不知道为什么那么多人将错就错。这里给出了正确的方法,下载后可直接编译执行。
使用`std::filesystem::directory_iterator`(C++17及以上)或`DIR*`和`struct dirent`(旧版C++)来遍历目录。`directory_iterator`是一个迭代器,可以像遍历容器一样遍历目录中的条目。在旧版C++中,`opendir()`...
1.DirectoryOperation.h和DirectoryOperation.cpp文件是目录操作类,能够读出指定目录下所有指定类型的文件名,而且 支持通配符过滤特定类型文件。同时也能够输出文件总数和子目录总数 2.Demo.cpp是示例程序。
本文实例为大家分享了C++获取指定目录下所有文件的具体代码,供大家参考,具体内容如下 1.获得指定目录下的所有文件(不搜索子文件夹) 需要包含的头文件 #include #include #include #include 函数实现 void ...
在C++编程中,获取程序运行目录是一项基本但至关重要的任务。这有助于程序找到与之相关的资源文件,如配置文件、日志文件或数据文件。`CString`是Microsoft的MFC(Microsoft Foundation Classes)库中提供的一种字符...
我们可以使用socket API建立连接,发送FTP命令,如`USER`、`PASS`、`LIST`等来登录和获取目录信息。 FTP目录遍历通常通过`LIST`命令实现,服务器返回目录和文件的详细列表。这些列表可以解析成结构化的数据,例如,...
/* offset to this dirent 在目录文件中的偏移 */ unsigned short d_reclen; /* length of this d_name 文件名长 */ unsigned char d_type; /* the type of d_name 文件类型 */ char d_name [NA
在C++编程中,遍历目录并打印文件及其后缀是一项常见的任务,特别是在处理文件系统操作时。在Visual Studio 2013环境下,我们可以利用C++标准库中的`<filesystem>`库(在C++17中引入)或旧版的`<dirent.h>`库来实现...
C++ 获取文件夹下的所有文件名 C++ 获取文件夹下的所有文件名 C++ 获取文件夹下的所有文件名 C++ 获取文件夹下的所有文件名
在C++编程中,创建一个可以允许用户同时选择多个文件和目录的对话框是一个常见的需求。这个场景通常出现在文件管理器、备份工具或者任何需要批量处理文件和目录的应用程序中。"C++ 多文件/多目录选择 选择框"指的是...
在C/C++编程语言中,获取文件大小是文件操作中的一个基本需求,尤其对于初学者和经常处理文件的开发者来说,掌握多种获取文件大小的方法是非常有帮助的。本文将详细介绍几种常用的获取文件大小的方法,包括使用`_...
在MFC中,`CFile`类可以用来访问单个文件的信息,但对于目录遍历,我们通常会使用`FindFirstFile`,`FindNextFile`以及`FindClose`这三个Windows API函数来获取文件列表。 1. **获取文件名称**: 文件名可以通过`...
这里我们将深入探讨如何在C++中实现这一功能,以及如何遍历目录和打印文件列表。 首先,我们需要了解C++标准库中并没有直接提供获取文件列表的函数。不过,我们可以利用平台相关的API,例如在Windows上使用`...
c++获取路径下的所有文件,并统计文件个数和目录个数
在Windows操作系统中,使用C++获取目录下所有文件名是一项常见的任务,这通常涉及到系统调用和文件I/O操作。本文将深入探讨如何利用C++和Windows API来实现这一功能。 首先,Windows API提供了一个名为`...
在Linux系统中,C++编程语言可以用于执行各种任务,包括操作文件和目录。本教程将探讨如何遍历指定文件夹路径下的所有文件,并将这些文件的路径写入一个TXT文本文件。这在处理大量数据或者需要自动化文件管理时非常...
- **获取目录**:客户端能请求服务器返回某个目录的文件列表,这需要服务器端有相应的文件系统访问权限。 4. **服务器功能**: - **监听与接受连接**:服务器启动一个监听线程,等待客户端的连接请求,一旦接收到...