Go でのクロスプラットフォームのディスク領域の取得
この記事では、Windows をカバーする空きディスク領域情報を取得するという課題に取り組みます。 Go プログラミング言語を使用する Linux および Mac プラットフォーム。
問題ステートメント
目的は、広く使用されている Unix コマンド df -h の出力を複製することです。このコマンドは、ボリュームの空きストレージ容量と合計ストレージ容量の詳細を提供します。この機能は、さまざまなオペレーティング システムに適応でき、Go で実装される必要があります。
ソリューション
POSIX システム (Linux、Mac)
POSIX ベースのシステム (Linux や Mac などの Unix 系オペレーティング システム) では、 sys.unix.Statfs パッケージが利用されます。このパッケージには、ファイル システム統計を表すデータ構造を返す Statfs 関数が含まれています。次のコード スニペットは、その使用法を示しています。
import "golang.org/x/sys/unix" import "os" var stat unix.Statfs_t wd, err := os.Getwd() unix.Statfs(wd, &stat) // Available blocks * size per block = available space in bytes fmt.Println(stat.Bavail * uint64(stat.Bsize))
Windows システム
Windows システムの場合、syscall パッケージは Windows システム コールへのアクセスを提供します。次のコード スニペットは、その使用法を示しています。
import "golang.org/x/sys/windows" var freeBytesAvailable uint64 var totalNumberOfBytes uint64 var totalNumberOfFreeBytes uint64 err := windows.GetDiskFreeSpaceEx(windows.StringToUTF16Ptr("C:"), &freeBytesAvailable, &totalNumberOfBytes, &totalNumberOfFreeBytes)
クロスプラットフォーム パッケージ
提供されたソリューションに基づいて、ユーザーはクロスプラットフォーム パッケージを開発することが推奨されます。この機能をカプセル化します。このパッケージは、基盤となるプラットフォーム固有の実装を抽象化し、オペレーティング システムに関係なく空きディスク領域情報を取得するための一貫したインターフェイスを提供する必要があります。
以上がGo を使用して Windows、Linux、macOS の空きディスク容量情報を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。