golang 通過fsnotify監控檔案

2021-09-28 21:16:45 字數 1752 閱讀 8141

二、使用fsnotify監控檔案

type watch struct

func

(w *watch)

watchdir

(dir string

) err = w.watch.

add(path)

if err !=

nil fmt.

println

("monitor:"

, path)

}return

nil}

)//開啟乙個goroutine來處理監控物件的事件

gofunc()

//將ev.name的路徑和檔名拆分出來;

拆分linux目錄;filepathbase()拆分windows目錄;filepathbase()自己根據path.bath()改的方法

filename := path.

base

(ev.name)

//linux platform

if runtime.goos ==

"windows"

//修改檔案的許可權;0644可讀

if err := os.

chmod

(ev.name,

0644

); err !=

nil//使用strings.split()方法將檔名儲存成陣列;此處根據需要編寫。

str := strings.

split

(filename,

"-")

}//write 寫入

if ev.op&fsnotify.write == fsnotify.write

//remove 刪除

if ev.op&fsnotify.remove == fsnotify.remove

}//rename 重新命名

if ev.op&fsnotify.rename == fsnotify.rename

//chmod 修改許可權

if ev.op&fsnotify.chmod == fsnotify.chmod }}

case err :=

<-w.watch.errors:}}

}()}

func

filepathbase

(path string

)string

// strip trailing slashes.

forlen

(path)

>

0&& path[

len(path)-1

]=='\\'

// find the last element

if i := strings.

lastindex

(path,

"\\"

); i >=

0// if empty now, it had only slashes.

if path ==

""return path

}func

main()

//新增要監控的物件,檔案或資料夾

go w.

watchdir

("d:/watchtest"

)}

三、完整原文資料

golang 通過fsnotify監控檔案,並通過檔案變化重啟程式

Golang 通過fsnotify監控多級目錄檔案

golang 通過fsnotify監控檔案,檢測資料夾目錄層級資料夾變化,菜鳥一枚,歡迎賜教!1.呼叫fsnotify包監控檔案 監控目錄 func this notifyfile watchdir dir string err this.watch.add path if err nil fmt....

Golang通過SSH執行交換機操作

golang通過ssh執行交換機操作 簡單實現通過輸入指令,兩步執行交換機命令。存在問題 不過我的目的已經達到,我主要是了解ssh的使用。package main import bufio fmt golang.org x crypto ssh log os strings sync 獲取賬號和密碼...

golang通過反射設定結構體變數的值

如果需要動態設定struct變數field的情況下,可以利用reflect來完成。package main import fmt reflect 定義結構體person type person struct func main fmt.prin程式設計客棧tln person 修改前 pp refl...