384
Chương 9: File, thư mục, và I/O
// truy xuất bởi thể hiện hiện tại của ứng dụng.
store = IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
IsolatedStorageScope.Assembly | IsolatedStorageScope.Domain,
null, null);
File được lưu trữ như một phần profile của người dùng, vì vậy người dùng có thể truy xuất
các file này từ bất kỳ máy nào trong mạng LAN nếu roaming profile
trường hợp này, phải thiết lập cờ
IsolatedStorageFile.Roaming
khi tạo không gian lưu trữ).
Bằng cách để .NET Framework và CLR cung cấp các mức cách ly, bạn không phải duy trì sự
tách biệt giữa các file, và không phải lo việc không hiểu rõ cơ chế làm việc sẽ gây mất dữ liệu
quan trọng.
19.
19.
Theo dõi h th ng file đ phát hi n thay đ i
ệ ố
ể
ệ
ổ
Theo dõi h th ng file đ phát hi n thay đ i
ệ ố
ể
ệ
ổ
Bạn cần phản ứng khi hệ thống file thay đổi tại một đường dẫn cụ thể (chẳng
hạn sửa hay tạo file).
Sử dụng thành phần
System.IO.FileSystemWatcher
, chỉ định file hoặc đường dẫn
cần theo dõi, và thụ lý các sự kiện
Created
,
Deleted
,
Renamed
, và
Changed
.
Khi liên kết nhiều ứng dụng và các quá trình nghiệp vụ, thường cần tạo một chương trình thụ
động và chỉ trở nên tích cực khi một file được tạo ra hoặc bị thay đổi. Bạn có thể tạo kiểu
chương trình thế này bằng cách quét định kỳ qua một thư mục, nhưng lại gặp phải vấn đề cân
bằng. Quét càng thường xuyên, càng tốn tài nguyên hệ thống. Quét càng ít, càng lâu phát hiện
được thay đổi. Cách tiện nhất là sử dụng lớp
FileSystemWatcher
để phản ứng trực tiếp các sự
kiện file của Windows.
Để sử dụng
FileSystemWatcher
, bạn phải tạo một thể hiện và thiết lập các thuộc tính sau:
•
Path
—chỉ định đường dẫn cần theo dõi.
•
Filter
—chỉ định kiểu file cần theo dõi.
•
NotifyFilter
—chỉ định kiểu thay đổi cần theo dõi.
FileSystemWatcher
sinh ra bốn sự kiện chính:
Created
,
Deleted
,
Renamed
, và
Changed
. Các sự
kiện này cung cấp thông tin qua đối số
FileSystemEventArgs
, bao gồm tên file (
Name
), đường
dẫn đầy đủ (
FullPath
), kiểu thay đổi (
ChangeType
). Sự kiện
Renamed
cung cấp thể hiện
RenamedEventArgs
dẫn xuất từ
FileSystemEventArgs
, và thêm thông tin về tên file ban đầu
(
OldName
và
OldFullPath
). Nếu cần, bạn có thể vô hiệu các sự kiện này bằng cách thiết lập
thuộc tính
FileSystemWatcher.EnableRaisingEvents
là
false
. Dễ dàng thụ lý các sự kiện
Created
,
Deleted
, và
Renamed
. Nhưng nếu muốn sử dụng sự kiện
Changed
, bạn cần sử dụng
thuộc tính
NotifyFilter
để chỉ định kiểu thay đổi cần theo dõi. Bằng không, chương trình của
bạn có thể bị sa lầy bởi một loạt các sự kiện khi file bị thay đổi.
3
Roaming profile được tạo bởi người quản trị hệ thống và được lưu trữ trên một server. Profile này có
sẵn mỗi khi bạn đăng nhập vào bất kỳ máy tính nào trên mạng. Bất cứ thay đổi nào cũng khiến roaming
profile được cập nhật lại trên server.