ด้วย Linux OS จะมีระบบย่อย ionotify ที่แจ้งให้แอปพลิเคชันมีการเปลี่ยนแปลงระบบไฟล์
อย่างไรก็ตามฉันเป็นผู้ใช้ Windows เป็นหลักดังนั้นฉันจึงสงสัยว่ามีวิธีที่คล้ายกันในการตรวจสอบการเปลี่ยนแปลงระบบไฟล์หรือไม่?
ด้วย Linux OS จะมีระบบย่อย ionotify ที่แจ้งให้แอปพลิเคชันมีการเปลี่ยนแปลงระบบไฟล์
อย่างไรก็ตามฉันเป็นผู้ใช้ Windows เป็นหลักดังนั้นฉันจึงสงสัยว่ามีวิธีที่คล้ายกันในการตรวจสอบการเปลี่ยนแปลงระบบไฟล์หรือไม่?
คำตอบ:
โปรดดูFindFirstChangeNotification API หรือFileSystemWatcherคู่. NET
หากคุณใช้. netให้ใช้FileSystemWatcher
. ข้อมูลเพิ่มเติมที่นี่: http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx
หากคุณกำลังใช้C , การใช้งานFindFirstChangeNotification
, ,FindNextChangeNotification
ReadDirectoryChangesW
ข้อมูลเพิ่มเติมที่นี่: http://msdn.microsoft.com/en-us/library/aa365261(VS.85).aspx
บนOSX API ที่เกี่ยวข้องคือfsevents
api
พวกเขาทั้งหมดแตกต่างกันอย่างละเอียดและทุกคนมีความน่าเชื่อถือที่น่าสงสัยในกรณีที่มีขอบ โดยทั่วไปคุณไม่สามารถพึ่งพา apis เหล่านี้เพื่อดูการเปลี่ยนแปลงทั้งหมดได้อย่างสมบูรณ์ 100% ของเวลา คนส่วนใหญ่ที่ใช้การตรวจสอบระบบไฟล์จะรวมเข้ากับการสแกนเป็นระยะเพื่อชดเชยข้อมูลที่สูญหายหรือไม่สมบูรณ์จาก push api
ดูสิ่งนี้: inotify-win พอร์ตของเครื่องมือ inotifywait สำหรับ Windows
และสิ่งนี้: inotify-tools
สายไปหน่อย แต่ ...
Windows มีสิ่งอำนวยความสะดวกคล้ายกับเหตุการณ์ OSX ซึ่งคุณสามารถตรวจสอบเหตุการณ์โดยไม่ต้องเรียกใช้แอพ Windows USN Journal จะติดตามการเปลี่ยนแปลงของไฟล์ทั้งหมด Jeffrey Richter (ผู้เขียน Advanced Windows) เขียนบทความที่ยอดเยี่ยมพร้อมตัวอย่างการทำงานสำหรับ MSDN Journal อัปเดต : ตอนนี้บทความจาก archive.org เนื่องจาก MSJ ไม่ออนไลน์ที่ MS อีกต่อไป
เอกสาร MSDN สำหรับ USN Change Journals
USN Change Journals น่าจะดีกว่าหากคุณกำลังสร้างแอปพลิเคชันเช่นเครื่องมือสำรองข้อมูลหรือดัชนีที่ต้องตรวจสอบปริมาณทั้งหมด
FileSystemWatcher
| FindFirstChangeNotification
PhillipBrandonHolmesกำลังพูดถึง ?
FileSystemWatcher () ไม่น่าเชื่อถือสาเหตุหลักมาจากการจัดการข้อผิดพลาดสำหรับบัฟเฟอร์ผู้เฝ้าดูไม่สมบูรณ์มากหรือน้อย เนื่องจากไม่มีเส้นทางและข้อมูลการจัดการข้อผิดพลาดโดยละเอียด Microsoft จึงไม่สามารถกู้คืนหรือสำรวจไดเร็กทอรีการทำงานด้วยตนเองได้
JNotify สำหรับ Windows ก็ไม่น่าเชื่อถือเช่นกันเนื่องจาก bug ^ นี้มาจาก win32 JNotify ใช้ win32 ดังนั้นจึงไม่แตกต่างจาก FileSystemWatcher ()
ฉันทำการค้นหาเล็กน้อยดูเหมือนว่าฉันจำได้ว่าเคยเห็นบางอย่างที่คล้ายกันสำหรับ Windows มี FileSystemWatcherสำหรับ. NET ส่วนใหญ่สำหรับ NT หรือ XP และส่งต่อ