Ngoài việc đọc tất cả các tệp và so sánh chúng với ảnh chụp trước đó, có cách nào để phát hiện khi thư mục thay đổi trong C# bằng Windows không? Tôi không nhớ PInvoke nếu đó là những gì nó cần.Làm thế nào để phát hiện khi một thư mục hoặc tập tin thay đổi mà không cần quét liên tục
Trả lời
Sử dụng lớp FileSystemWatcher - nó thực hiện những gì bạn muốn. Nó sẽ không cho bạn biết byte nào trong tệp đã thay đổi, nhưng nó sẽ cho bạn biết tệp nào có thay đổi.
Từ doc:
Sử dụng FileSystemWatcher để xem cho thay đổi trong một thư mục chỉ định. Bạn có thể xem các thay đổi trong tệp và các thư mục con của thư mục được chỉ định . Bạn có thể tạo thành phần để xem tệp trên máy tính cục bộ, ổ đĩa mạng hoặc máy tính từ xa.
Để xem các thay đổi trong tất cả các file, thiết lập thuộc tính Filter để một chuỗi rỗng ("") hoặc ký tự đại diện sử dụng ("."). Để xem tệp cụ thể, hãy đặt thuộc tính Lọc thành tên tệp. Ví dụ: để xem các thay đổi trong tệp tệp MyDoc.txt, hãy đặt thuộc tính Bộ lọc thành "MyDoc.txt". Bạn cũng có thể xem để biết các thay đổi trong một loại tệp nhất định. Ví dụ: để xem thay đổi trong tệp văn bản, hãy đặt thuộc tính Lọc thành "* .txt".
Có một số loại thay đổi mà bạn có thể xem trong một thư mục hoặc tệp. Ví dụ: bạn có thể xem các thay đổi trong Thuộc tính, ngày LastWrite và thời gian hoặc Kích thước tệp hoặc thư mục. Điều này được thực hiện bằng cách đặt thuộc tính NotifyFilter thành một trong số giá trị NotifyFilters. Để biết thêm thông tin về loại thay đổi bạn có thể xem, hãy xem Thông báo cho các trình sửa lỗi.
Bạn có thể xem để đổi tên, xóa, hoặc tạo tệp hoặc thư mục. Ví dụ: để xem đổi tên các tệp văn bản , hãy đặt thuộc tính Bộ lọc thành "* .txt" và gọi phương thức WaitForChanged với thông số được chỉ định cho tham số .
Tôi phải làm điều này cho một chương trình có thể xem thư mục và xem liệu có thêm tệp hình ảnh mới nào không và sau đó nó sẽ tự động thay đổi kích thước chúng. Khi một người nào đó sẽ thêm nhiều tệp cùng một lúc, người xem sẽ không bắt tất cả các tệp vì nó là một chuỗi duy nhất và đang bận thay đổi kích thước một hình ảnh trong khi một tệp khác bị xóa.
Tôi phải tạo một ứng dụng đa luồng, trong đó chủ đề chính chỉ xem thư mục và thêm các tệp vào hàng đợi và một chuỗi khác sẽ đọc từ hàng đợi và thay đổi kích thước các hình ảnh đó.
Đó là điều bạn có thể muốn cẩn thận nếu bạn định làm bất kỳ điều gì với tệp.
Có, tôi chắc chắn sẽ sinh ra một thread thread thread cho mỗi hoạt động tập tin tôi sẽ làm, cảm ơn cho tip! – jjxtra
- 1. Làm thế nào để bạn phát hiện khi một tập tin được thay đổi trong iCloud?
- 2. Xem thư mục để thay đổi tập tin
- 3. Làm thế nào để thay đổi thư mục tập tin đầu ra dựa trên thiết bị
- 4. Một bash một lót để thay đổi vào thư mục mà một số tập tin nằm
- 5. GTK + Cần Giờ Không có tập tin hoặc thư mục
- 6. Làm thế nào để mở một giải pháp VS2010 trong VS2012 mà không cần di chuyển hoặc thay đổi bất kỳ tập tin nào?
- 7. PHP: Làm thế nào tôi có thể lấy một tệp từ một thư mục mà không cần quét toàn bộ thư mục?
- 8. Tránh phát hiện tệp không đầy đủ khi xem thư mục để thay đổi trong java
- 9. Làm thế nào để thay đổi thư mục của người dùng hiện tại trong một tập tin thực thi
- 10. Làm thế nào để giám sát hiệu quả một thư mục để thay đổi trên linux?
- 11. Làm thế nào để đối phó với "intrin.h: Không có tập tin hoặc thư mục"?
- 12. Làm thế nào để phát hiện khi một tập tin mp3 phát xong
- 13. Làm thế nào để quét một thư mục trong Java?
- 14. Làm thế nào để phát hiện một sửa đổi tập tin với TFS?
- 15. Copy & đổi tên một tập tin vào cùng một thư mục mà không xóa các tập tin gốc
- 16. Làm thế nào để đổi tên một thư mục trong Mercurial và tiếp tục theo dõi tất cả các tập tin thay đổi
- 17. Làm thế nào để chuyển đổi một thư mục hiện có sang một bản sao làm việc SVN (WC) mà không thay thế các tệp cục bộ?
- 18. Cách phát hiện các thay đổi về tệp hoặc thư mục trong Android?
- 19. Thay đổi thư mục làm việc thành tập tin hiện đang mở
- 20. Làm thế nào để viết hoặc sửa đổi dữ liệu EXIF cho một hình ảnh hiện có trên hệ thống tập tin, mà không cần tải hình ảnh?
- 21. Kiểm tra nếu một tên tập tin là một thư mục hoặc một tập tin
- 22. Làm thế nào để liên tục giám sát thư mục bằng lệnh dnotify/inotify
- 23. Làm thế nào để làm cho SVN thực hiện một lệnh mà không làm thay đổi
- 24. Làm thế nào để trích xuất một tập tin từ một rpm vào thư mục hiện hành?
- 25. Viết vào một thư mục mới bằng Python mà không thay đổi thư mục
- 26. Làm thế nào để thay thế mà không tạo tập tin trung gian trong sed?
- 27. Làm thế nào để Thêm hiện tại tập tin/thư mục với Eclipse
- 28. Làm cách nào để tôi có thể thêm một tệp mà không thay đổi thư mục làm việc hiện tại?
- 29. Làm thế nào để phát hiện hệ điều hành trong một tập tin thực hiện?
- 30. AppleScript: Làm thế nào để kiểm tra xem một cái gì đó là một thư mục hoặc một tập tin
nó sẽ thường cho bạn biết tệp nào có thay đổi. Tôi đã thử nghiệm điều này. Dưới tải nặng của nó không phải là 100%. –
cũng có rất nhiều "gotchas" để xem ra trong việc thực hiện. Hãy chắc chắn rằng bạn đọc tất cả các tài liệu kỹ lưỡng. Bạn có thể phải khởi động lại trình xem theo thời gian khi xảy ra lỗi. –
Rực rỡ, cảm ơn! – jjxtra