Maison > développement back-end > Golang > Comment puis-je obtenir des informations sur l'espace disque libre sous Windows, Linux et macOS à l'aide de Go ?

Comment puis-je obtenir des informations sur l'espace disque libre sous Windows, Linux et macOS à l'aide de Go ?

Patricia Arquette
Libérer: 2024-12-16 19:16:12
original
538 Les gens l'ont consulté

How Can I Get Free Disk Space Information Across Windows, Linux, and macOS Using Go?

Récupération d'espace disque multiplateforme dans Go

Dans cet article, nous abordons le défi d'obtenir des informations sur l'espace disque libre, couvrant Windows, Plateformes Linux et Mac utilisant le langage de programmation Go.

Problème Déclaration

L'objectif est de répliquer le résultat de la commande Unix largement utilisée df -h, qui fournit des détails sur l'espace de stockage libre et total pour les volumes. Cette fonctionnalité doit être adaptable à divers systèmes d'exploitation et implémentée dans Go.

Solution

Systèmes POSIX (Linux, Mac)

Sur les systèmes basés sur POSIX (systèmes d'exploitation de type Unix tels que Linux et Mac), le package sys.unix.Statfs est utilisé. Ce package contient la fonction Statfs, qui renvoie une structure de données représentant les statistiques du système de fichiers. L'extrait de code suivant illustre son utilisation :

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))
Copier après la connexion

Systèmes Windows

Pour les systèmes Windows, le package syscall permet d'accéder aux appels système Windows. L'extrait de code suivant démontre son utilisation :

import "golang.org/x/sys/windows"

var freeBytesAvailable uint64
var totalNumberOfBytes uint64
var totalNumberOfFreeBytes uint64

err := windows.GetDiskFreeSpaceEx(windows.StringToUTF16Ptr("C:"),
    &freeBytesAvailable, &totalNumberOfBytes, &totalNumberOfFreeBytes)
Copier après la connexion

Package multiplateforme

Sur la base des solutions fournies, les utilisateurs sont encouragés à développer un package multiplateforme qui encapsule cette fonctionnalité. Ce package doit faire abstraction des implémentations sous-jacentes spécifiques à la plate-forme et fournir une interface cohérente pour récupérer les informations sur l'espace disque libre quel que soit le système d'exploitation.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal