如何在MATLAB中删除临时文件

hmae6n7t  于 2023-10-23  发布在  Matlab
关注(0)|答案(3)|浏览(213)

我有一个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。

wlsrxk51

wlsrxk511#

您应该查看作为MATLAB的一部分提供的tempdirtempname函数。它们被设计为提供到目录中文件名的 * 绝对 * 路径,在该目录中,您 * 保证 * 具有写访问权限。请参阅the MathWorks web site上这两个函数的文档。
根据您看到的问题,我怀疑(nrz也是)您正在将临时文件写入MATLAB的当前目录。这不仅会导致你失去对文件的跟踪,以便以后删除文件,而且有一天你会在一个只读目录中结束,并且完全不走运!

inn6fuwd

inn6fuwd2#

你使用的是相对文件名还是绝对文件名?如果在循环中使用cd更改当前文件夹,或者如果代码调用的任何函数调用cd而没有返回到原始文件夹,则相对文件名将不起作用。您可以使用pwd检查当前文件夹。
可能的解决方案:1.避免cd。2.使用绝对文件名。

fhg3lkii

fhg3lkii3#

我想通了。事实证明,问题不在上面的代码片段中;它在我代码的另一个部分我在其他地方写临时文件,忘了删除它们。
底线是:上面的片段绝对没有错。tempnamerecycledelete是创建和销毁临时文件的完美函数。

相关问题