在POSIX系统上,可以使用
syscall.Statfs。
以当前工作目录的字节为单位打印可用空间的示例:
import "syscall"import "os"var stat syscall.Statfs_twd, err := os.Getwd()syscall.Statfs(wd, &stat)// Available blocks * size per block = available space in bytesfmt.Println(stat.Bavail * uint64(stat.Bsize))
对于Windows,您还需要执行syscall路由。示例(来源):
h := syscall.MustLoadDLL("kernel32.dll")c := h.MustFindProc("GetDiskFreeSpaceExW")var freeBytes int64_, _, err := c.Call(uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(wd))), uintptr(unsafe.Pointer(&freeBytes)), nil, nil)随意编写一个提供跨平台功能的软件包。有关如何实现跨平台的内容,请参见构建工具帮助页面。



