Monitoring a directory for new files does not catch all the files
5 次查看(过去 30 天)
显示 更早的评论
Hi all,
I need to monitor a directory for new files, specifically images, that are appearing in a specific location. In order to do this I am using simple code as below:
folder = 'path_to_directory'
imds_start = imageDatastore(folder,"IncludeSubfolders",true);
filenames = imds_start.Files;
current_files = filenames;
while true
imds = imageDatastore(folder,"IncludeSubfolders",true);
filenames = imds.Files;
new_files = setdiff(filenames,current_files);
if ~isempty(new_files)
fprintf('ONE NEW FILE')
current_files = filenames;
filename = char(new_files(end));
IMpath = strcat(folder,filename)
else
% fprintf('no new files\n')
end
end
The issue is that when files appear very quickly, some of the are not "detected". I assume that reading the file content is not the best option but this is the only one I came up with that actually works in MATLAB. Would you propose something more efficient?
0 个评论
采纳的回答
Voss
2023-3-7
new_files will contain the names of all the new files, so instead of using just new_files(end) and assuming there's one new file, use all of new_files.
if ~isempty(new_files)
fprintf('%d NEW FILE(S)',numel(new_files))
% now do what you're going to do with new_files (not just new_files(end))
end
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 File Operations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!