簡體   English   中英

知道路徑是指C ++中的文件夾還是文件,最便宜的方法是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM