Go を使用して、開いているファイルのファイル名が変更された場合に通知する必要がある小さなユーティリティを作成していました。以下のコードは、私が試したアプローチを示しています。
package main
import "os"
import "fmt"
import "time"
func main() {
path := "data.txt"
file, _ := os.Open(path)
for {
details, _ := file.Stat()
fmt.Println(details.Name())
time.Sleep(5 * time.Second)
}
}
これは無限ループを開始し、file.Stat()
5 秒ごとに実行してファイルの詳細を取得し、名前を出力します。ただし、実行中にファイル名を変更しても、上記の出力は変わりません。
ただし、に置き換えるdetails.Name()
とdetails.Size()
、ファイルサイズの変更に気づきます。
これは私のバージョンの Go の単なるバグですか、それとも間違ったことをしているだけですか? そのような問題についての言及はどこにもありません。
Goバージョン1.1.1(darwin/amd64)のMacでこれを実行しています。
返信ありがとうございます:)