Kelas System.IO.FileSystemWatcher

Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.

Gunakan FileSystemWatcher untuk melihat perubahan dalam direktori tertentu. Anda dapat melihat perubahan dalam file dan subdirektori direktori yang ditentukan. Anda dapat membuat komponen untuk menonton file di komputer lokal, drive jaringan, atau komputer jarak jauh.

Untuk melihat perubahan di semua file, atur Filter properti ke string kosong ("") atau gunakan wildcard ("*.*"). Untuk menonton file tertentu, atur Filter properti ke nama file. Misalnya, untuk melihat perubahan dalam file MyDoc.txt, atur Filter properti ke "MyDoc.txt". Anda juga dapat melihat perubahan dalam jenis file tertentu. Misalnya, untuk melihat perubahan dalam file teks, atur Filter properti ke "*.txt".

Ada beberapa jenis perubahan yang dapat Anda tonton dalam direktori atau file. Misalnya, Anda dapat melihat perubahan dalam Attributes, LastWrite tanggal dan waktu, atau Size file atau direktori. Ini dilakukan dengan mengatur NotifyFilter properti ke salah NotifyFilters satu nilai. Untuk informasi selengkapnya tentang jenis perubahan yang dapat Anda tonton, lihat NotifyFilters.

Anda dapat menonton untuk mengganti nama, menghapus, atau membuat file atau direktori. Misalnya, untuk mengawasi penggantian nama file teks, atur Filter properti ke "*.txt" dan panggil WaitForChanged metode dengan Renamed yang ditentukan untuk parameternya.

Sistem operasi Windows memberi tahu komponen perubahan file Anda dalam buffer yang dibuat oleh FileSystemWatcher. Jika ada banyak perubahan dalam waktu singkat, buffer dapat meluap. Hal ini menyebabkan komponen kehilangan jejak perubahan dalam direktori, dan hanya akan memberikan pemberitahuan selimut. Meningkatkan ukuran buffer dengan InternalBufferSize properti mahal, karena berasal dari memori non-halaman yang tidak dapat ditukar ke disk, jadi jaga buffer sekecil namun cukup besar untuk tidak melewatkan peristiwa perubahan file apa pun. Untuk menghindari luapan buffer, gunakan NotifyFilter properti dan IncludeSubdirectories sehingga Anda dapat memfilter pemberitahuan perubahan yang tidak diinginkan.

Untuk daftar nilai properti awal untuk instans FileSystemWatcher, lihat FileSystemWatcher konstruktor.

Pertimbangan saat menggunakan FileSystemWatcher kelas :

  • File tersembunyi tidak diabaikan.
  • Dalam beberapa sistem, FileSystemWatcher melaporkan perubahan pada file menggunakan format nama file 8.3 pendek. Misalnya, perubahan pada "LongFileName.LongExtension" dapat dilaporkan sebagai "LongFil~. Lon".
  • Kelas ini berisi permintaan tautan dan permintaan warisan di tingkat kelas yang berlaku untuk semua anggota. SecurityException A dilemparkan ketika pemanggil langsung atau kelas turunan tidak memiliki izin kepercayaan penuh. Untuk detail tentang tuntutan keamanan, lihat Menautkan Permintaan.
  • Ukuran maksimum yang InternalBufferSize dapat Anda atur untuk properti untuk memantau direktori melalui jaringan adalah 64 KB.

Menyalin dan memindahkan folder

Sistem operasi dan FileSystemWatcher objek menginterpretasikan tindakan potong dan tempel atau tindakan pemindahan sebagai tindakan ganti nama untuk folder dan kontennya. Jika Anda memotong dan menempelkan folder dengan file ke dalam folder yang sedang diawasi, FileSystemWatcher objek hanya melaporkan folder sebagai baru, tetapi bukan kontennya karena pada dasarnya hanya diganti namanya.

Untuk diberi tahu bahwa konten folder telah dipindahkan atau disalin ke folder yang ditonton, sediakan OnChanged dan OnRenamed metode penanganan aktivitas seperti yang disarankan dalam tabel berikut.

Penanganan aktivitas Kejadian Ditangani Melakukan
OnChanged Changed, , CreatedDeleted Laporkan perubahan atribut file, file yang dibuat, dan file yang dihapus.
OnRenamed Renamed Cantumkan jalur lama dan baru dari file dan folder yang diganti namanya, diperluas secara rekursif jika diperlukan.

Peristiwa dan ukuran buffer

Perhatikan bahwa beberapa faktor dapat memengaruhi peristiwa perubahan sistem file mana yang dimunculkan, seperti yang dijelaskan oleh berikut ini:

  • Operasi sistem file umum mungkin memunculkan lebih dari satu peristiwa. Misalnya, ketika file dipindahkan dari satu direktori ke direktori lainnya, beberapa dan beberapa OnChangedOnCreated dan OnDeleted peristiwa mungkin dimunculkan. Memindahkan file adalah operasi kompleks yang terdiri dari beberapa operasi sederhana, oleh karena itu meningkatkan beberapa peristiwa. Demikian juga, beberapa aplikasi (misalnya, perangkat lunak antivirus) dapat menyebabkan peristiwa sistem file tambahan yang terdeteksi oleh FileSystemWatcher.
  • FileSystemWatcher Dapat menonton disk selama tidak dialihkan atau dihapus. FileSystemWatcher tidak menaikkan peristiwa untuk CD dan DVD, karena stempel waktu dan properti tidak dapat berubah. Komputer jarak jauh harus memiliki salah satu platform yang diperlukan yang diinstal agar komponen berfungsi dengan baik.

Perhatikan bahwa FileSystemWatcher mungkin melewatkan peristiwa ketika ukuran buffer terlampaui. Untuk menghindari peristiwa yang hilang, ikuti panduan berikut:

  • Tingkatkan ukuran buffer dengan mengatur InternalBufferSize properti .
  • Hindari menonton file dengan nama file panjang, karena nama file panjang berkontribusi untuk mengisi buffer. Pertimbangkan untuk mengganti nama file ini menggunakan nama yang lebih pendek.
  • Jaga kode penanganan peristiwa Anda sesingkat mungkin.