如何在MATLAB中删除临时文件

时间:2012-05-04 21:21:50

标签: matlab delete-file

我有一个MATLAB脚本需要将临时文件写入磁盘,然后在完成后删除这些文件。重要的是我自己删除文件(而不是让它们累积在临时目录中),因为有问题的代码在循环中执行多次。如果没有立即删除文件,脚本将迅速吞噬大量磁盘空间。

我认为下面的代码片段会起作用,而且当我自己运行它时它会起作用。但是,出于某种原因,当我将其包含在我的较大脚本中时,代码段会失败。临时文件不会被删除并使临时目录混乱。

    % create temporary file
    myTmpFile = [tempname '.wav'];
    fs = 32000;
    wavwrite(zeros(fs,1),fs,myTmpFile);


    % use the file here


    % delete the file when we're done
    prevState = recycle('off'); % turn recycle off to permanently delete files
    delete(myTmpFile)
    recycle(prevState);         % restore the state of recycle

有谁知道我做错了什么?我在OS X 10.7.3上运行MATLAB 7.10.0。

  • 编辑*

我明白了。请参阅下面的答案。

3 个答案:

答案 0 :(得分:2)

您应该查看作为MATLAB一部分提供的tempdirtmpname函数。它们旨在为您保证具有写访问权限的目录中的文件名提供绝对路径。请参阅the MathWorks web site上的两个功能的文档。

基于您所看到的问题我怀疑(就像nrz一样)您正在将临时文件写入MATLAB当前目录中。这不仅会导致您在以后删除文件以进行删除,而且有一天您将会进入只读目录并且完全运气不好!

答案 1 :(得分:1)

您使用的是相对文件名还是绝对文件名?如果您在循环内部使用cd更改当前文件夹,或者您的代码调用的任何函数调用cd而不返回原始文件夹,则相对文件名将无效。您可以使用pwd检查当前文件夹。

可能的解决方案:1。避免cd。 2.使用绝对文件名。

答案 2 :(得分:1)

我明白了。事实证明问题不在上面的片段中;它在我的代码中完全不同的部分。我在别处写临时文件,忘了删除它们。

结论:上面的代码段完全没有问题。 tempnamerecycledelete是创建和销毁临时文件的绝佳功能。