【问题标题】:Check if directory exists using <filesystem>使用 <filesystem> 检查目录是否存在
【发布时间】:2022-07-21 18:02:28
【问题描述】:

我有一个包含某个文件路径的字符串。该文件不需要存在(在我的函数中可以创建它),但该目录必须存在是必要的。所以我想使用&lt;filesystem&gt; 库来检查它。 我试过这段代码:

std::string filepath = {"C:\\Users\\User\\test.txt"};
bool filepathExists = std::filesystem::exists(filepath);

另外,路径是绝对的。例如,对于"C:\Users\User\file.txt",我想检查"C:\Users\User" 是否存在。 我曾尝试使用迭代器构造一个字符串:从 '\\' 的开头到最后一次出现,但它的解决方案非常粗略,如果路径仅包含文件名,则会出现异常。

因此,有人可以提供更优雅的方式吗?

【问题讨论】:

  • 试试is_directory(filepath.parent_path())。

标签: c++ file directory utilities std-filesystem


【解决方案1】:

这听起来像是std::filesystem::weakly_canonical 的工作。它可以规范化路径,即使完整路径不(尚)存在。

然后您可以在结果上调用.parent_path 以获取父目录的绝对路径,并检查该路径是否存在。

【讨论】:

  • 是的,我需要一个 parent_path() 方法。谢谢
【解决方案2】:

@ach 提供的答案:

std::filesystem::path filepath = std::string("C:\\Users\\User\\test.txt");
bool filepathExists = std::filesystem::is_directory(filepath.parent_path());

它检查“C:\Users\User”是否存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-14
    • 2015-04-29
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 2013-05-19
    相关资源
    最近更新 更多