gpt4 book ai didi

c++ - 诊断 QDir::rmdir 故障

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:09 28 4
gpt4 key购买 nike

我正在使用以下代码在 Linux 上删除一个空文件夹:

bool removeFolder (const QString& path)
{
QDir dir(path);
assert(dir.exists());
return dir.rmdir(".");
}

出于某种原因,它有时会返回 false(对于特定文件夹,但这些文件夹似乎并没有任何错误)。如果我随后使用 <unistd.h> 中的::rmdir删除同一个文件夹,它成功了。 我怎么知道为什么 QDir::rmdir失败了吗?

到目前为止,这在 Windows 上从未发生过,QDir::rmdir刚刚好。

最佳答案

确认:在 windows 上工作,在 linux 上失败。

正在阅读 中的“rmdir”文档,此处 https://pubs.opengroup.org/onlinepubs/007904875/functions/rmdir.html ,它在那里说“ 如果路径参数引用的路径的最终组成部分是点或点-点,则 rmdir() 将失败。”所以可能发生的是 QDir::rmdir( ) 在 linux 中调用 unistd rmdir() 函数,这个函数失败并显示“.”。

我尝试只使用完整的绝对路径( QDir::rmdir(absolutePath) )并且它有效;然而,我认为在 unistd 的 rmdir() 上使用 QDir::rmdir() 基本上没有意义,所以从现在开始我将坚持使用 unistd rmdir()。

注意:QDir::removeRecursively() 是另一回事:它似乎工作正常,而且比通过 opendir() 然后连续的 readdir()(或 nftw(...FTW_DEPTH ...)东西)。

关于c++ - 诊断 QDir::rmdir 故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18682416/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com