Kesan Penukaran Fail dalam Go: Penyelesaian Praktikal
Bahasa Go menyediakan keupayaan yang luas untuk pengendalian fail, tetapi pengesanan perubahan fail bukanlah seperti mudah seperti dalam sistem Unix. Untuk menangani perkara ini, mari kita terokai pendekatan merentas platform yang memanfaatkan pakej os.
Mengesan Perubahan Fail
Pakej os menawarkan cara yang mudah untuk mendapatkan atribut fail, termasuk saiznya dan masa pengubahsuaian terakhir. Dengan membandingkan atribut ini secara berkala, anda boleh mengenal pasti apabila fail telah diubah.
Coretan kod berikut menunjukkan cara melaksanakan pengesanan perubahan fail:
func watchFile(filePath string) error { initialStat, err := os.Stat(filePath) if err != nil { return err } for { stat, err := os.Stat(filePath) if err != nil { return err } if stat.Size() != initialStat.Size() || stat.ModTime() != initialStat.ModTime() { break } time.Sleep(1 * time.Second) } return nil }
Penggunaan dan Pertimbangan
Untuk menggunakan fungsi ini, hanya lulus laluan ke fail yang anda ingin pantau. Fungsi ini akan terus menyemak atribut fail dan memberitahu anda apabila ia mengesan perubahan. Berikut ialah contoh penggunaan:
doneChan := make(chan bool) go func(doneChan chan bool) { defer func() { doneChan <- true }() err := watchFile("/path/to/file") if err != nil { fmt.Println(err) } fmt.Println("File has been changed") }(doneChan) <-doneChan
Walaupun pendekatan ini tidak secekap panggilan sistem seperti fcntl(), ia mudah dan berfungsi dengan pasti merentas platform. Ia amat berguna apabila anda tidak mempunyai akses kepada fungsi sistem peringkat rendah.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Perubahan Fail dalam Go dengan Cara Merentas Platform?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!