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!

