Необходимо вывести все директории и файлы по указанному пути рекурсией + к каждому файлу вывести информацию, типа дата создания/изменения, вес (в общем, общие свойства).
На данный момент написан рекурсивный вывод файлов + вывод веса. Но не работает, если в пути есть пробел, например, c:\Program Files (пытался экранировать, писать \\, но ничего не получилось) и если нужно вывести по маске, например, c:\*.txt. Также не получается вывести что-то кроме веса файла.
Использую компилятор MinGW.
#include <stdio.h>
#include <string.h>
#include <dirent.h>
#include "iostream"
#include "string"
#include <windows.h>
#include <fstream>
using namespace std;
void listFilesRecursively(char *path);
int main()
{
setlocale(LC_ALL , "Russian");
char path[100];
printf("Enter path to list files: ");
scanf("%s", path);
listFilesRecursively(path);
return 0;
}
void listFilesRecursively(char *basePath)
{
WIN32_FILE_ATTRIBUTE_DATA Info;
char path[1000];
struct dirent *dp;
DIR *dir = opendir(basePath);
if (!dir)
return;
while ((dp = readdir(dir)) != NULL)
{
if (strcmp(dp->d_name, ".") != 0 && strcmp(dp->d_name, "..") != 0)
{
printf("%s\n", dp->d_name);
strcpy(path, basePath);
strcat(path, "/");
strcat(path, dp->d_name);
string path_s = (const char*) path;
GetFileAttributesEx(path_s.c_str(), GetFileExInfoStandard, &Info);
cout<<Info.nFileSizeLow<<endl;
listFilesRecursively(path);
}
}
closedir(dir);
}