Qt檔案監控QFileSystemWatcher

2021-09-29 20:33:39 字數 1690 閱讀 1058

簡述qfilesystemwatcher類用於提供監視檔案和目錄修改的介面。

qfilesystemwatcher通過監控指定路徑的列表,監視檔案系統中檔案和目錄的變更。

呼叫addpath()函式可以監控乙個特定的檔案或目錄。如果需要監控多個路徑,可以使用addpaths()。通過使用removepath()和removepaths()函式來移除現有路徑。

qfilesystemwatcher檢查新增到它的每個路徑,已新增到qfilesystemwatcher的檔案可以使用的files()函式進行訪問,目錄則使用directories()函式進行訪問。

當乙個檔案被修改、重新命名或從磁碟上刪除時,會發出filechanged()訊號。同樣,當乙個目錄或它的內容被修改或​​刪除時,會發射directorychanged()訊號。需要注意:檔案一旦被重新命名或從硬碟刪除,目錄一旦從磁碟上刪除,qfilesystemwatcher將停止監控。

注:監控檔案和目錄進行修改的行為會消耗系統資源。這意味著,你的程序同時監控會有檔案數量的限制。一些系統限制開啟的檔案描述符的數量預設為256。也就是說,如果你的程序試使用addpath()和addpaths()函式新增超過256個檔案或目錄到檔案系統將會失敗。

公共函式

bool addpath(const qstring & path)

如果路徑存在,則新增至檔案系統監控,如果路徑不存在或者已經被監控了,那麼不新增。

如果路徑是乙個目錄,內容被修改或​​刪除時,會發射directorychanged()訊號;否則,當檔案被修改、重新命名或從磁碟上刪除時,會發出filechanged()訊號。

如果監控成功,返回true;否則,返回false.

監控失敗的原因通常依賴於系統,但也包括資源不存在、接入失敗、或總的監控數量限制等原因。

qstringlist addpaths(const qstringlist & paths)

新增每乙個路徑至新增至檔案系統監控,如果路徑不存在或者已經被監控了,那麼不新增。

返回值是不能被監控的路徑列表。

qstringlist directories() const

返回乙個被監控的目錄路徑列表。

qstringlist files() const

返回乙個被監控的檔案路徑列表。

bool removepath(const qstring & path)

從檔案系統監控中刪除指定的路徑。如果監控被成功移除,返回true。

刪除失敗的原因通常是與系統相關,但可能是由於路徑已經被刪除。

qstringlist removepaths(const qstringlist & paths)

從檔案系統監控中刪除指定的路徑。返回值是乙個無法刪除成功的路徑列表。

訊號void directorychanged(const qstring & path)

當目錄被修改(例如:在指定的路徑中新增或刪除乙個檔案)或從磁碟刪除時,這個訊號被發射。注意:如果有在短時間內有幾種變化,可能有些變化不會發出這個訊號。然而,變化的序列中的最後的變化總會發射這個訊號。

注意:這是乙個私有訊號,可以用於訊號連線但不能由使用者發出。

void filechanged(const qstring & path)

當在指定路徑中的檔案被修改、重新命名或從磁碟上刪除時,這個訊號被發射。

注意:這是乙個私有訊號,可以用於訊號連線但不能由使用者發出。

———————————————

Linux檔案監控

如果要讓伺服器保持最佳效能,你應該將 linux 伺服器的執行級別 runlevel 設定為 3 就是控制台模式,當你需要圖形化桌面的時候使用 startx 命令來啟動它。修改配置 etc inittab 找到 initdefault 一樣,將id 5 initdefault修改為 id 3 ini...

監控日誌檔案

環境 名稱主機名 ip服務端 wangyitong 192.168.232.128 客戶端wyt3 192.168.232.132 root wyt3 ls root wyt3 unzip pyscripts master.zip 解壓安裝包 root wyt3 cd pyscripts maste...

Linux檔案監控

假設要讓server保持最佳效能,你應該將 linux server的執行級別 runlevel 設定為 3 就是控制台模式。當你須要圖形化桌面的時候使用 startx 命令來啟動它。改動配置 etc inittab 找到 initdefault 一樣,將id 5 initdefault改動為 id...