У меня есть довольно простая консольная программа, чтобы определить, существует папка или файл или нет, используя stat
:
#include <iostream>
#include <sys/stat.h>
using namespace std;
int main() {
char path[] = "myfolder/";
struct stat status;
if(stat(path,&status)==0) { cout << "Folder found." << endl; }
else { cout << "Can't find folder." << endl; } //Doesn't exist
cin.get();
return 0;
}
Я также попробовал access
версию:
#include <iostream>
#include <io.h>
using namespace std;
int main() {
char path[] = "myfolder/";
if(access(path,0)==0) { cout << "Folder found." << endl; }
else { cout << "Can't find folder." << endl; } //Doesn't exist
cin.get();
return 0;
}
Никто из них не находит мою папку (которая находится прямо в том же каталоге, что и программа). Они работали на моем последнем компиляторе (по умолчанию с DevCpp). Я перешел на CodeBlocks и сейчас компилирую с Gnu GCC, если это поможет. Я уверен, что это быстрое решение - может кто-нибудь помочь?
(Очевидно, я новичок в этом, поэтому, если вам нужна какая-то другая информация, которую я оставил, пожалуйста, дайте мне знать).
UPDATE
Проблема была с базовым каталогом. Обновленная рабочая программа выглядит следующим образом:
#include <iostream>
#include <sys/stat.h>
using namespace std;
int main() {
cout << "Current directory: " << system("cd") << endl;
char path[] = "./bin/Release/myfolder";
struct stat status;
if(stat(path,&status)==0) { cout << "Directory found." << endl; }
else { cout << "Can't find directory." << endl; } //Doesn't exist
cin.get();
return 0;
}
ДРУГОЕ ОБНОВЛЕНИЕ
Оказывается, что обратная косая черта на пути - большая проблема.