[英]What's the cheapest way to know if a path refers to a folder or a file in c++?
我正在使用shell擴展覆蓋處理程序,並且將傳遞一個我知道是有效的路徑,但是我不知道它是文件夾還是文件。 可以相對頻繁地調用此操作,因此我想盡可能便宜地確定它是文件還是文件夾。 使用c ++(特定於Windows的系統適合我的要求),如何才能最好地做到這一點?
GetFileAttributes()將提供以下信息:
const DWORD result = GetFileAttributes("C:\\path\\x");
if (INVALID_FILE_ATTRIBUTES == result)
{
std::cerr << "Error: " << GetLastError() << "\n";
}
else if (FILE_ATTRIBUTE_DIRECTORY == (result & FILE_ATTRIBUTE_DIRECTORY))
{
std::cout << "Is directory\n";
}
else
{
std::cout << "Is file\n";
}
我建議使用Boost的Filesystem庫中的 is_directory
...
is_directory( "foo" )
使用stat
變量之一,並測試st_mode
位。
有stat()函數家族,該函數家族返回有關文件/目錄的元數據,包括其類型: http : //msdn.microsoft.com/zh-cn/library/14h5k7ff.aspx
如果您可以使用Windows類,則可以使用
Directory::Exists(path)
如果為true,則您有一個文件夾。 類似使用
File::Exists(path)
是否要確定路徑是否是文件。
還有PathIsDirectory
的(Shell API) PathIsDirectory
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.