web-dev-qa-db-ja.com

C ++およびwinAPIを使用してディレクトリが存在するかどうかを確認する方法

可能性のある複製:
CのWindowsにディレクトリが存在するかどうかをどのように確認しますか?

C++およびWindows APIを使用してディレクトリが存在するかどうかを確認するにはどうすればよいですか?

35
MaSmi

まあ、私たちはすべての時点でn0obsでした。質問しても問題ありません。これはまさにこれを行う簡単な関数です:

#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!
}
70
FailedDev

Shell Lightweight API(shlwapi.dll)へのリンクが問題ない場合は、 PathIsDirectory関数 を使用できます。

8
Simon Mourier

このコードは動作する可能性があります。

//if the directory exists
 DWORD dwAttr = GetFileAttributes(str);
 if(dwAttr != 0xffffffff && (dwAttr & FILE_ATTRIBUTE_DIRECTORY)) 
6

0.1秒のGoogle検索:

BOOL DirectoryExists(const char* dirName) {
  DWORD attribs = ::GetFileAttributesA(dirName);
  if (attribs == INVALID_FILE_ATTRIBUTES) {
    return false;
  }
  return (attribs & FILE_ATTRIBUTE_DIRECTORY);
}
4
user142019