Các tài liệu của DirectoryStream nêu rõ:lặp lại một DirectoryStream và thay đổi nội dung của một thư mục cùng lúc
Các iterator là yếu nhất quán. Đó là chủ đề an toàn nhưng không đóng băng thư mục trong khi lặp lại, vì vậy nó có thể (hoặc có thể không) phản ánh cập nhật cho thư mục xảy ra sau khi DirectoryStream được tạo .
Trên máy của tôi, tôi đã thực hiện lặp lại đơn giản qua thư mục ở chế độ gỡ lỗi. Trước khi lặp lại hoàn thành, tôi đã phá vỡ thực hiện, thêm một tập tin vào thư mục đang được lặp lại và tiếp tục. Lặp lại không thấy tệp bổ sung.
Câu hỏi của tôi: trong trường hợp nào sẽ lặp lại phản ánh cập nhật cho nội dung thư mục? Thật không may là tài liệu chính thức rất mơ hồ về nó. Để nói rằng ít nhất.
Tôi không biết, nhưng cách tôi đọc nó, nó là không xác định, và có thể phụ thuộc vào hệ điều hành/FS cơ bản và triển khai cụ thể. Đoán tốt nhất của tôi là nó sẽ phản ánh các bản cập nhật nếu thư mục của bạn nằm trên một inode nằm sau trong cây so với cái hiện tại mà trình vòng lặp đang trỏ đến. Cách kích động hành vi này mà tôi không biết. Tôi cảm thấy tự tin khi nói rằng nó không thể ngay lập tức (theo một cách xác định) bằng cách sử dụng Java thuần túy. –