2010-07-09 15 views

Trả lời

28

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ố .

+6

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%. –

+2

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. –

+0

Rực rỡ, cảm ơn! – jjxtra

5

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.

+0

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

Các vấn đề liên quan