当前位置: 首页 > 知识库问答 >
问题:

递归rmdir后八度mkdir失败

吴浩博
2023-03-14

我有一个创建子文件夹的代码,但如果子文件夹已经存在,则首先删除它。我用的是Octave3。6.4_gcc4。6.2用于Win7 pro机器上的MinGW。我注意到,如果子文件夹存在并且包含多个文件,mkdir将失败。在执行下一行代码之前,rmdir似乎还没有在后台完成。下面是测试代码的示例

parentDir = 'C:\Temp\rmDir';
childDir = fullfile(parentDir, 'output');
if (exist(childDir, 'dir') ~= 0)
    [status] = rmdir(childDir, 's');
    disp(status);
end;
[status] = mkdir(parentDir, 'output');
disp(status);
disp(exist(childDir, 'dir'));

下面是子文件夹不存在时的倍频结果。这和预期的一样。

octave:5> testrmdir
  1
  7

下面是子文件夹存在且为空时的倍频程结果。这正如预期的那样有效。

octave:6> testrmdir
  1
  1
  7

下面是子文件夹存在且包含3个总大小为349 KB的PNG文件时的倍频程结果。mkdir和rmdir的状态均为1。但是,exist函数报告该文件夹不存在。我从windows资源管理器确认子文件夹已删除。我的猜测是,当mkdir执行时,文件仍然被先前的rmdir函数删除。因此,mkdir报告成功,因为rmdir尚未删除子文件夹。但是,在执行exist时,rmdir已完成,因此子文件夹不再存在。

octave:7> testrmdir
  1
  1
  0

我尝试了不同的文件类型,结果如下:

  • 2个PNG文件,总大小为232 KB-通过

当我从命令行运行Octave时,行为是相同的。我过去在MATLAB上使用过相同的代码,没有任何明显的问题。现在,我不得不在另一台机器上切换到Octave进行测试自动化

这有意义吗?关于如何使此代码工作的任何建议,无论子文件夹的内容或大小?

不确定这是否重要,但我在资源文件中有以下设置:confirm\u recursive\u rmdir(false)。

共有1个答案

宰父冠玉
2023-03-14

我将if语句更改为while循环,这解决了问题(即,我所做的只是将“if”替换为“while”)。然后我在while循环中添加了一个计数器,并看到rmdir在第一次迭代中是成功的。因此,我无法解释为什么代码不能与if语句一起工作。请参阅下面带有新计数器的扩展代码。但正如我所说,如果我简单地将原始代码中的“if”替换为“while”,代码也可以工作。

parentDir = 'C:\Temp\rmDir';
childDir = fullfile(parentDir, 'output');
count = 0;
while (exist(childDir, 'dir') ~= 0)
%if (exist(childDir, 'dir') ~= 0)
    count++
    [status] = rmdir(childDir, 's');
    disp(status);
    disp(count);
end;
[status] = mkdir(parentDir, 'output');
disp(status);
disp(exist(childDir, 'dir'));
 类似资料:
  • 本文向大家介绍C#用递归算法解决八皇后问题,包括了C#用递归算法解决八皇后问题的使用技巧和注意事项,需要的朋友参考一下 1.引子   中国有一句古话,叫做“不撞南墙不回头",生动的说明了一个人的固执,有点贬义,但是在软件编程中,这种思路确是一种解决问题最简单的算法,它通过一种类似于蛮干的思路,一步一步地往前走,每走一步都更靠近目标结果一些,直到遇到障碍物,我们才考虑往回走。然后再继续尝试向前。通过

  • 问题内容: 我想在运行Java程序时使用诸如和之类的系统命令。 我怎样才能做到这一点? 问题答案: 为什么要使用命令行?仅供参考,内置了平台无关的类。 http://www.exampledepot.com/egs/java.io/deletefile.html http://www.roseindia.net/java/beginners/java-create- directory.shtml

  • 我有一个网站,有一个资产目录。有时候我需要删除整个文件夹,以前在AWS上我有一个EC2和一个EBS存储,它工作得很好。 我现在正在测试EFS以跨多个实例共享资产。文件将被删除,但当它要删除目录时,会抛出一条警告,说明目录不是空的: 错误[警告]:rmdir(/path/):目录不为空 在查看文件系统时,目录是空的,因此我只能假设存在一些延迟。我已经加入了一个sleep函数,看看它是否作为一个测试修

  • 本文向大家介绍python 使用递归回溯完美解决八皇后的问题,包括了python 使用递归回溯完美解决八皇后的问题的使用技巧和注意事项,需要的朋友参考一下 八皇后问题描述:在一个8✖️8的棋盘上,任意摆放8个棋子,要求任意两个棋子不能在同一行,同一列,同一斜线上,问有多少种解法。 规则分析: 任意两个棋子不能在同一行比较好办,设置一个队列,队列里的每个元素代表一行,就能达到要求 任意两个棋子不能在

  • 我不明白为什么我会得到这个最大深度错误。iam试图使用bst递归方法在数组中查找数字索引,下面是我的代码 任何人都可以告诉我代码块中发生了什么 错误块: PS C:\Users\admin\Desktop\DSA

  • 主要内容:递归实现,非递归实现二叉树后序遍历的实现思想是:从根节点出发,依次遍历各节点的左右子树,直到当前节点左右子树遍历完成后,才访问该节点元素。 图 1 二叉树   如图 1 中,对此二叉树进行后序遍历的操作过程为: 从根节点 1 开始,遍历该节点的左子树(以节点 2 为根节点); 遍历节点 2 的左子树(以节点 4 为根节点); 由于节点 4 既没有左子树,也没有右子树,此时访问该节点中的元素 4,并回退到节点 2 ,遍