Tôi đang sử dụng các tính năng mới của Java7 để xem thư mục cho những thay đổi (như được mô tả trong hướng dẫn sau đây: http://download.oracle.com/javase/tutorial/essential/io/notification.html)Java nio FileSystem Watcher khóa danh bạ. Xóa trở nên bất khả thi
Các theo dõi bản thân công trình (gần) không có vấn đề.
Ít hoặc nhiều tôi có hai vấn đề và tôi hy vọng một số bạn có ý tưởng về cách xử lý.
Sau khi thư mục được thêm vào xem, VM có quyền truy cập vào nó và nó không phát hành. Đây không phải là một vấn đề lớn. Nhưng nếu bạn đang tạo một thư mục trong một thư mục khác và trong thư mục này nữa. (ví dụ: bạn tạo trong thư mục
c:\tmp\a
thư mụcb
và trongb
thư mụcc
(c:\tmp\a\b\c
)) không thể xóa thư mụca
, do quyền truy cập của máy ảo vàob
vàc
. Nếu bạn muốn xóa tất cả các thư mục (ví dụ: với Windows Explorer), bạn phải xóac
trước, sau đób
và sau đóa
. Thật kỳ lạ, nhưng cách này hoạt động (mặc dù là bất tiện)Sự cố này có vẻ là kết quả của sự kiện đầu tiên. Nếu nhiều thay đổi trong
a
xảy ra đôi khi (nhiều hơn hoặc ít hơn), tôi nhận được một ngoại lệ cho tôi biết, thư mục mới được tạo ra được sử dụng bởi một quy trình khác và không thể truy cập vào nó. Thật kỳ lạ, bởi vì tôi nghĩ điều này không quan trọng để nhận được thông báo. Và bởi vì nó không phải là hoàn toàn rõ ràng khi chính xác ngoại lệ này được ném.
Bạn có ý tưởng làm cách nào để không thể khóa hoặc ít nhất là để người dùng có khả năng xóa cấu trúc thư mục theo cách thuận tiện cổ điển?