二、使用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...