У меня есть сценарий MATLAB, который должен записывать временные файлы на диск, а затем удалять эти файлы, когда я закончил с ними. Важно, чтобы я сам удалял файлы (а не позволял им накапливаться в каталоге temp), потому что данный код находится в цикле, который выполняется много раз. Если файлы не будут быстро удалены, скрипт быстро сожрет большие объемы дискового пространства.Как удалить временные файлы в MATLAB
Я думал, что снимок кода ниже будет работать, и это произойдет, когда я запустил его самостоятельно. По какой-то причине, однако, фрагмент не удается, когда я включаю его в мой большой скрипт. Временные файлы не удаляются и не помещаются в каталог temp.
% 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
Кто-нибудь знает, что я делаю неправильно? Я запускаю MATLAB 7.10.0 на OS X 10.7.3.
- EDIT *
Я понял это. См. Мой ответ ниже.
Возможно, вам будет интересно определить объект 'onCleanup', чтобы файл удалялся, даже если функция завершилась из-за ошибки. – Jonas