golang では、fsnotify を使用してファイル監視を実装できます。 fsnotify は Go 言語のクロスプラットフォーム ファイル システム監視ツールで、チャネルベースのクロスプラットフォーム リアルタイム監視インターフェイスを実装しています。golang は fsnotify を通じてファイルを監視し、ファイルの変更を通じてプログラムを再起動できます。
このチュートリアルの動作環境: Windows 10 システム、GO バージョン 1.18、Dell G3 コンピューター。
golang では、fsnotify を使用してファイル監視を実装できます。
golang は、fsnotify を通じてファイルを監視し、ファイルの変更を通じてプログラムを再起動します。
Go 言語のクロスプラットフォーム ファイル システム監視ツール - fsnotify
Linux カーネルでは、Inotify は通知に使用されるツールです。ユーザー 空間プログラム ファイル システム変更のメカニズム。ファイルの作成、変更、削除などのファイル システムの変更を監視し、対応するイベントをアプリケーションに通知できます。
Inotify はファイルとディレクトリの両方を監視できます。ディレクトリを監視する場合、ディレクトリとそのディレクトリ内の各サブディレクトリおよびファイルを同時に監視できます。 Golang の標準ライブラリ syscall はこのメカニズムを実装しています。
さらに拡張および抽象化するために、github.com/fsnotify/fsnotify パッケージはチャネルベースのクロスプラットフォームのリアルタイム監視インターフェイスを実装します。
fsnotify ツールの使用法
1. 必要なパッケージをダウンロードします
go get github.com/fsnotify/fsnotify
2. fsnotify を使用してファイルを監視します
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
if log.Fatal(err);
{
テスト結果は次のとおりです: tmp ディレクトリ内のすべての操作がキャプチャされましたが、fsnotify に問題があります。サブディレクトリを再帰的にキャプチャすることはできません。 . 孫子ディレクトリの操作イベントは自分で実装する必要があります。 もう 1 つの問題は、フォルダー名を変更しても、fsnotify のevent.Name が元のファイル名のままであることです。これには、最初に名前変更イベント内の以前の監視を削除してから、新しい監視を追加する必要があります。 次のように変更します:
|
以上がgolangでファイル監視を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。