在这种情况下,(如果您使用的是 Windows),最好的方法是使用.NET
.
fileObj = System.IO.FileSystemWatcher('c:\work\temp');
fileObj.Filter = '*.txt';
fileObj.EnableRaisingEvents = true;
addlistener(fileObj,'Changed',@eventhandlerChanged);
有不同的事件类型,您可以为它们使用相同的回调,也可以使用不同的回调:
addlistener(fileObj, 'Changed', @eventhandlerChanged );
addlistener(fileObj, 'Deleted', @eventhandlerChanged );
addlistener(fileObj, 'Created', @eventhandlerChanged );
addlistener(fileObj, 'Renamed', @eventhandlerChanged );
eventhandlerChanged
你的回调函数在哪里。
function eventhandlerChanged(source,arg)
disp('TXT file changed')
end
无需使用sleep
或轮询。如果你的程序是基于 UI 的,那么就没有什么可做的了,当用户关闭图形时,程序就结束了。事件回调的执行与按钮单击完全相同。如果您的程序类似于脚本,则可以使用无限循环。
更多信息在这里: http: //www.mathworks.com/help/matlab/matlab_external/working-with-net-events-in-matlab.html