Maison >développement back-end >Golang >Comment puis-je obtenir de l'espace disque libre sur différents systèmes d'exploitation ?

Comment puis-je obtenir de l'espace disque libre sur différents systèmes d'exploitation ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-31 16:59:10649parcourir

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

Récupération de l'espace disque libre dans Go sur plusieurs plates-formes

Dans cet article, nous explorons une solution pour récupérer dynamiquement la taille libre et totale de un volume de stockage sous Go, quel que soit le système d'exploitation (Windows, Linux, Mac). Cette solution élimine le besoin de commandes externes telles que df -h ou de calculs manuels.

Pour les systèmes basés sur POSIX, nous exploitons la fonction sys.unix.Statfs pour accéder à la structure Statfs_t. Par exemple, pour obtenir l'espace libre pour le répertoire de travail actuel en octets :

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))

Dans le cas de Windows, nous adoptons l'approche syscall. Voici un exemple mis à jour utilisant le nouveau package 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)

N'hésitez pas à étendre ces exemples dans un package multiplateforme pour une utilisation plus large. Pour obtenir des conseils sur la mise en œuvre multiplateforme, consultez la documentation d'aide de l'outil de génération.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn