c++ 一段创建文件夹的代码,但是运行起来总是输出Directory already exists.

#include <Windows.h>
#include <iostream>
using namespace std;
int main()
{
    string folderPath = "D:\\database\\Genshin1111";

    if (!GetFileAttributesA(folderPath.c_str()) && FILE_ATTRIBUTE_DIRECTORY) {
        bool flag = CreateDirectory(folderPath.c_str(), NULL);
        // flag 为 true 说明创建成功
    }
    else {
        cout << "Directory already exists." << endl;
    }
    return 0;
}

抄写的一段创建文件夹的代码,但是运行起来总是输出Directory already exists.
感谢大佬解答

D:\database\Genshin1111是不是这个目录已经有了,你打开d盘下看看

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    问题分析: 根据提供的代码,当检查文件夹是否存在时,如果文件夹不存在,应该创建文件夹并输出"Folder created successfully.",否则输出"Directory already exists."。然而,无论何时运行代码,都会输出"Directory already exists.",表明无论文件夹是否存在,都会走到else语句中。

    解决方案: 经过初步分析,代码的逻辑是正确的,问题可能出现在运行环境上。可能存在以下情况导致问题出现:

    1. 在运行代码的时候,已经存在名为"C:/MyFolder"的文件而不是文件夹。
    2. 在运行代码的时候,代码没有读取到正确的文件夹路径。

    为了解决这个问题,可以尝试以下步骤:

    1. 确认文件夹路径是否正确。可以添加打印语句来检查路径是否正确。
    2. 检查文件系统中是否存在名为"C:/MyFolder"的文件。可以手动确认并删除该文件。
    3. 确保你使用的编译器支持C++17的filesystem库。可以查看编译器文档或使用其他编译器来测试一下。
    4. 尝试用其他文件夹路径测试代码,看是否会出现同样的问题。这样可以判断是否是特定路径的问题。
    5. 将代码改写为使用其他方法来创建文件夹,例如使用系统命令或其他第三方库。可以测试一下这些方法是否能够成功创建文件夹。

    如果上述解决方案都没有解决你的问题,那可能是由于你的系统环境或代码其他地方造成了该问题。建议你寻求其他专业人士的帮助来查找解决方案。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^