ホームページ > バックエンド開発 > Golang > 異なるオペレーティング システム間で Go の空きディスク領域を取得するにはどうすればよいですか?

異なるオペレーティング システム間で Go の空きディスク領域を取得するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-31 16:59:10
オリジナル
627 人が閲覧しました

How Can I Get Free Disk Space in Go Across Different Operating Systems?

複数のプラットフォームにわたる Go の空きディスク容量の取得

この記事では、空きサイズと合計サイズを動的に取得するソリューションを検討します。オペレーティング システム (Windows、Linux、Mac) に関係なく、Go を使用したスト​​レージ ボリューム。このソリューションにより、df -h などの外部コマンドや手動計算が不要になります。

POSIX ベースのシステムの場合、sys.unix.Statfs 関数を利用して Statfs_t 構造体にアクセスします。たとえば、現在の作業ディレクトリの空き領域をバイト単位で取得するには、次のようにします。

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 の場合、syscall アプローチを採用します。新しい sys/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 の空きディスク領域を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート