Maison >développement back-end >Golang >Comment puis-je obtenir de l'espace disque libre sur différents systèmes d'exploitation ?
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!