Monitoring a directory for new files does not catch all the files
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Marcin Kowalski
el 7 de Mzo. de 2023
Comentada: Voss
el 8 de Mzo. de 2023
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 comentarios
Respuesta aceptada
Voss
el 7 de Mzo. de 2023
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
2 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Startup and Shutdown en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!