我在MATLAB中有一个图像分析程序,用于从硬件帧抓取器中获取图像。它将它们保存到临时文件夹(Windows中的%TEMP%\yymmdd-hhmmss\
),分析它们,然后尝试删除它们。但是删除操作总是失败,"该文件正由另一个进程使用" 。显然,MATLAB仍以某种方式打开它们。
我无法使用fopen('all')
找到任何打开的句柄。我使用imread
来阅读图片 - 它是否仍然在某个地方保留了打开的句柄?如果是这样,我怎么能关闭呢?
答案 0 :(得分:2)
我做了一点挖掘。事实证明,图像文件被MATLAB函数GetFileTime锁定,我用它来设置图像的抓取后的修改时间。我不确定为什么它会锁定文件,但我找到different method来设置文件时间,这不会导致文件被锁定。
(感谢@excaza让我更好地了解这一点。这是当天的结束,我无法解决这个问题,所以我只是发布在这里。非常懒我!)
答案 1 :(得分:0)
如果fclose('all')
或pack
不适合您,请确保没有其他程序(即防病毒)正在尝试扫描临时目录。对于我的应用程序,在我的工作目录中创建子文件夹可以避免访问问题。