您的位置:首页 > 运维架构 > Linux

windows与linux读取文件夹下的文件

2014-07-27 12:33 316 查看
//获取目录路径下面所有文件的内容

//适用于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+"\\*.*";

cout<<szDir<<endl;

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

}

int main()

{
string strDir = "E:\\yjf\\occi";
vector<string> strVec;
GetFileNameFromDir(strDir,strVec);

for(vector<string>::iterator it=strVec.begin();it!=strVec.end();it++)
cout<<*it<<endl;

system("pause");

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐