Go에서 여유 디스크 공간 확보
여유 디스크 공간을 찾는 것은 시스템 관리에서 일반적인 작업입니다. Go에서는 사용 중인 운영 체제에 따라 적절한 기능을 사용하여 이 정보를 검색할 수 있습니다.
POSIX 시스템
POSIX 시스템에서는 sys .unix.Statfs 함수. 이 함수는 파일이나 디렉터리의 경로를 인수로 사용하고 unix.Statfs_t 구조를 반환합니다. 이 구조의 Bavail 필드는 파일 시스템에서 사용 가능한 블록 수를 나타내고, Bsize 필드는 각 블록의 크기(바이트)를 나타냅니다. 여유 공간을 바이트 단위로 계산하려면 이 두 값을 곱하세요.
예를 들어 현재 작업 디렉터리의 여유 공간을 바이트 단위로 인쇄하려면:
import ( "fmt" "golang.org/x/sys/unix" "os" ) func main() { var stat unix.Statfs_t wd, err := os.Getwd() if err != nil { panic(err) } if err := unix.Statfs(wd, &stat); err != nil { panic(err) } freeSpace := stat.Bavail * uint64(stat.Bsize) fmt.Println(freeSpace) }
Windows
Windows에서는 syscall 패키지를 사용할 수 있습니다. 이 패키지는 GetDiskFreeSpaceEx 기능이 포함된 Windows API에 대한 액세스를 제공합니다. 이 함수는 드라이브 경로를 인수로 사용하고 사용 가능한 여유 바이트 수, 총 바이트 수 및 총 여유 바이트 수를 반환합니다.
예를 들어 드라이브의 여유 공간을 바이트 단위로 가져오려면 C: 드라이브:
import ( "fmt" "golang.org/x/sys/windows" ) func main() { var freeBytesAvailable uint64 var totalNumberOfBytes uint64 var totalNumberOfFreeBytes uint64 err := windows.GetDiskFreeSpaceEx(windows.StringToUTF16Ptr("C:"), &freeBytesAvailable, &totalNumberOfBytes, &totalNumberOfFreeBytes) if err != nil { panic(err) } fmt.Println(freeBytesAvailable) }
크로스 플랫폼 패키지
필요한 경우 크로스 플랫폼 솔루션을 사용하면 POSIX 및 Windows 시스템 모두에 기능을 제공하는 패키지를 만들 수 있습니다. Go의 빌드 도구를 사용하면 빌드 중인 운영 체제에 따라 다양한 동작을 지정할 수 있습니다.
위 내용은 Go에서 여유 디스크 공간을 얻는 방법: 크로스 플랫폼 가이드?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!