我有一个 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。
cd
而之后没有返回到原始文件夹,则相对文件名将不起作用。您可以使用
pwd
检查当前文件夹。可能的解决方案: 1. 避免
cd
。 2. 使用绝对文件名。
我想通了。事实证明问题并不在上面的代码片段中;而是在上面的代码片段中。它位于我的代码的完全不同的部分。我在其他地方写入临时文件,但忘记删除它们。
tempname
、
recycle
和
delete
是创建和销毁临时文件的完美函数。