FindFirstFile()
-
Hallo zusammen. Ich habe folgendes Problem.
Ziel ist zu prüfen ob der Ordner (hier "juk") leer ist. Für das Beispiel ist der Ordner leer aber der Fall tritt nicht ein. Welchen Fehler mache ich?#include "stdafx.h" #include <windows.h> #include <iostream> #include <conio.h> void GetFileList() { WIN32_FIND_DATA w32d; std::string data_dir = "C:\\juk\\*.*"; HANDLE hFind = FindFirstFile(data_dir.c_str(), &w32d); if (!hFind) { printf("Ordner ist leer!"); FindClose(hFind); return; } FindClose(hFind); return; } int main(void) { GetFileList(); _getch(); return 0; }
-
Du wirst in jedem Ordner die beiden Ordner aktueller Ordner und übergeordneter Ordner
.
und
..
finden. Prüfe darauf und überlies diese.
-
Da du ja mit C++ unterwegs bist, kannst du das übrigens auch mit einfachen Bordmitteln lösen:
#include <string> #include <filesystem> bool isEmpty(const std::string &path) { for(const auto &p : std::filesystem::directory_iterator(path)) { if(p.path() != "." && p.path() != "..") return false; } return true; } int main() { std::cout << isEmpty("C:/test"); std::cout << isEmpty("C:/qs"); std::cin.get(); }
Möglicherweise ist dein Toolchain noch nicht bereit für C++17, weshalb
<filesystem>
in<experimental/filesystem>
bzw.std::filesystem
instd::experimental::filesystem
geändert werden muss.
-
Danke für eure Antworten
Das Problem hat sich nun gelöst