我试图用C++中的一个测试将一个目录重命名为与现有目录相同的名称。我试过SHFileOperation。这实际上主要工作。问题是我们有一个自动测试,由于某些原因,在自动测试过程中测试失败。在手动运行上运行良好,但自动化不是那么好。我们认为它可能会弹出一些对话框,即使我的标志设置为不允许。我也尝试重命名C++函数。重命名似乎没有工作时尝试将某些东西重命名为现有名称。在C++中重命名一个目录
那么有没有其他方法可以使用?
我试图用C++中的一个测试将一个目录重命名为与现有目录相同的名称。我试过SHFileOperation。这实际上主要工作。问题是我们有一个自动测试,由于某些原因,在自动测试过程中测试失败。在手动运行上运行良好,但自动化不是那么好。我们认为它可能会弹出一些对话框,即使我的标志设置为不允许。我也尝试重命名C++函数。重命名似乎没有工作时尝试将某些东西重命名为现有名称。在C++中重命名一个目录
那么有没有其他方法可以使用?
你可以试试boost::filesystem
,如果这对你很重要的话,它具有便携性的优点。
namespace bfs=boost::filesystem;
std::string name("old_dir", "new_dir");
system::error_code ec = bfs::rename(name, new_name);
的ec
是和,可以被引用here错误代码的对象,所以你可以检查错误条件。
我不得不下载boost库,不幸的是这不是一个选项。 – discodowney
你可以尝试MoveFile这也为目录工作。 虽然我怀疑任何API是否能够将某些东西重命名为已存在的名称。 https://msdn.microsoft.com/en-us/library/windows/desktop/aa365239(v=vs.85).aspx
您是否使用绝对目录路径或相对路径?如果路径是相对的,则可能是自动测试从不同的地方启动,并且重命名的目录不存在于那里。 – Brady
我看不出你如何重命名一些东西,并让新名称成为现有对象的名称。这总会失败。 –
http://stackoverflow.com/questions/3764822/how-to-durably-rename-a-file-in-posix – sehe