如何在 MATLAB 中删除临时文件

问题描述 投票:0回答:3

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

matlab delete-file
3个回答
2
投票

您应该查看作为 MATLAB 一部分提供的

tempdir
tempname
函数。它们旨在为您“保证”具有写入权限的目录中的文件名提供“绝对”路径。请参阅MathWorks 网站中这两个函数的文档。 根据您所看到的问题,我怀疑(nrz 也是如此)您正在将临时文件写入 MATLAB 的当前目录中。这不仅会导致您在以后删除时丢失文件,而且有一天您会进入只读目录并完全运气不好!

您使用的是相对文件名还是绝对文件名?如果您在循环内使用

cd

1
投票
cd

而之后没有返回到原始文件夹,则相对文件名将不起作用。您可以使用

pwd
检查当前文件夹。

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

我想通了。事实证明问题并不在上面的代码片段中;而是在上面的代码片段中。它位于我的代码的完全不同的部分。我在其他地方写入临时文件,但忘记删除它们。 


1
投票
tempname

recycle

delete
是创建和销毁临时文件的完美函数。
    

© www.soinside.com 2019 - 2024. All rights reserved.