前言

 

【c++基础】遍历目录并写入txt文件-linux_ios

【c++基础】遍历目录并写入txt文件-linux_ios_02

/******************************************************************************
* File: get_traindata.cpp
* Coder: AMY
* Email:
* Data: 20181107
*******************************************************************************/
#include <iostream>
#include <stdio.h>
#include <unistd.h>
#include <dirent.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <string.h>
#include <fstream>

//Global Variables.
char dir[100] = "/trainimg/right_eye/";
int const MAX_STR_LEN = 200;
std::ofstream traindata;
//Show all files under dir_name, do not show directories.
void showAllFiles(const char* dir_name)
{
std::string path(dir_name);//or path = dir_name;
//check the parameter.
if( NULL==dir_name )
{
std::cout << "dir_name is null..." << std::endl;
return;
}
//check if dir_name is a valid dir.
struct stat s;
lstat(dir_name, &s);
if( !S_ISDIR(s.st_mode) )
{
std::cout << "dir_name is not a valid directory..." << std::endl;
return;
}
struct dirent* filename;//return value for readdir().
DIR* dir;//return value for opendir().
dir = opendir(dir_name);
if( NULL==dir )
{
std::cout << "Can not open dir..." << dir_name << std::endl;
return;
}
std::cout << "Successfully opened the dir..." << std::endl;
//read all the files in the dir.
while( (filename=readdir(dir)) != NULL )
{
//get rid of "." and ".."
if( strcmp(filename->d_name, ".")==0 || strcmp(filename->d_name, "..")==0 ) continue;
std::cout << filename->d_name << std::endl;
traindata << path+filename->d_name << std::endl;
traindata << 1 << std::endl;
}
}

int main()
{
traindata.open("traindata.txt", std::ios::app);
showAllFiles(dir);
traindata.close();
return 0;
}

View Code

 

参考

1.

​https://www.itency.com/topic/show.do?id=310867​