Eventuali duplicati:
How do you check if a directory exists on Windows in C?Come verificare se esiste directory in C++ e WinAPI
Come posso controllare se una directory esiste in C++ e Windows API?
Eventuali duplicati:
How do you check if a directory exists on Windows in C?Come verificare se esiste directory in C++ e WinAPI
Come posso controllare se una directory esiste in C++ e Windows API?
beh, eravamo tutti n0obs ad un certo punto nel tempo. Nessun problema nel chiedere. Ecco una semplice funzione che fa esattamente questo:
#include <windows.h>
#include <string>
bool dirExists(const std::string& dirName_in)
{
DWORD ftyp = GetFileAttributesA(dirName_in.c_str());
if (ftyp == INVALID_FILE_ATTRIBUTES)
return false; //something is wrong with your path!
if (ftyp & FILE_ATTRIBUTE_DIRECTORY)
return true; // this is a directory!
return false; // this is not a directory!
}
'GetFileAttributes()' restituisce 'INVALID_FILE_ATTRIBUTES' quando si verifica un errore. Devi usare 'GetLastError()' per scoprire cosa sia effettivamente questo errore. Se restituisce 'ERROR_PATH_NOT_FOUND',' ERROR_FILE_NOT_FOUND', 'ERROR_INVALID_NAME' o' ERROR_BAD_NETPATH', in realtà non esiste. Ma se restituisce la maggior parte degli altri errori, allora qualcosa esiste effettivamente nel percorso specificato ma gli attributi semplicemente non sono accessibili. –
Per quelli che inciampano in questa risposta, tieni presente che il codice sopra riportato è ANSI non Unicode. Per Unicode moderno, è meglio prendere un parametro LPCTSTR come lo snippet in questa altra risposta StackOverflow: http://stackoverflow.com/a/6218445. (LPCTSTR sarà tradotto in 'wchar_t *' dal compilatore.). È quindi possibile racchiudere la funzione che riconosce Unicode per prendere uno 'std :: wstring 'in C++ anziché' std :: string'. – JasDev
0,1 seconda ricerca Google:
BOOL DirectoryExists(const char* dirName) {
DWORD attribs = ::GetFileAttributesA(dirName);
if (attribs == INVALID_FILE_ATTRIBUTES) {
return false;
}
return (attribs & FILE_ATTRIBUTE_DIRECTORY);
}
Questo codice potrebbe funzionare:
//if the directory exists
DWORD dwAttr = GetFileAttributes(str);
if(dwAttr != 0xffffffff && (dwAttr & FILE_ATTRIBUTE_DIRECTORY))
Se il collegamento alla shell API leggero (shlwapi .dll) è ok per te, puoi usare lo PathIsDirectory function
Forse puoi mostrare quello che hai fino ad ora –
perché non fare semplicemente =========> BOOL PathFileExists (pszPath); <========= come mostrato in https://msdn.microsoft.com/en-us/library/windows/desktop/bb773584(v=vs.85).aspx? – Fractal