1:C++判断文件是否存在[1][2]
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string filePath = "C:\\faceTest.txt";//文件路径
fstream fileStream; //定义文件流
fileStream.open(filePath, ios::in);//文件以输入方式打开(文件数据输入到内存)
if(!fileStream)
{
cout<<filePath<<" does not exist!"<<endl;
}
else
{
cout<<filePath<<" exists!"<<endl;
}
return 0;
}
2:遍历指定文件下子文件,得到文件名[3]
(1)不递归,仅记录当前文件目录子文件名
#include <iostream>
#include <string>
#include <vector>
#include <io.h> //必须的头文件
using namespace std;
void GetSubFilesPath( string path, vector<string>& files);
int main()
{
string Bigfilepath("C:\\face");
vector<string> path;
GetSubFilesPath(Bigfilepath, path);
return 0;
}
void GetSubFilesPath(string path, vector<string>& files)
{
//文件句柄
long long hFile = 0; //如果句柄是long 或者int 只能用于32位,而long long 在32位和64位都可以
//文件信息
struct _finddata_t fileinfo;
string p;//临时定义string 字符串,保存子文件完整路径
hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo);
if(hFile != -1)
{
do
{
files.push_back(p.assign(path).append("\\").append(fileinfo.name));
}while(_findnext(hFile, &fileinfo) == 0);
}
_findclose(hFile);
}
注意:files保存着所有文件名,但前两项是类似系统文件(.和..),后面才是子文件路径名。
(2)递归直到非目录文件,得到所有子文件路径名
#include <iostream>
#include <string>
#include <vector>
#include <io.h> //必须的头文件
using namespace std;
void GetAllSubFilesPath( string path, vector<string>& files);
int main()
{
string Bigfilepath("C:\\faceTest");
vector<string> path;
GetAllSubFilesPath(Bigfilepath, path);
return 0;
}
void GetAllSubFilesPath(string path, vector<string>& files)
{
//文件句柄
long hFile = 0;
//文件信息
struct _finddata_t fileinfo;
string p;//临时定义string 字符串,保存子文件完整路径
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)
GetAllSubFilesPath( 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);
}
}
注意:path下全部是子文件名。
[1]http://blog.youkuaiyun.com/roger_77/article/details/1538447/
[2]http://www.cnblogs.com/shaoguobao/archive/2011/04/15/2017413.html
[3]http://blog.youkuaiyun.com/xuejiren/article/details/37040827