D:如何在媒体/分区上获得可用磁盘空间?

Dmi*_*kov 1 size d partition

我需要在分区上获得总的和可用的大小.我怎么能用D得到它?我应该使用哪些功能?

Ada*_*ppe 5

在Posix系统(包括Linux,但通常不是Windows)上,您可以使用statvfsC函数,该函数在D via中可用import core.sys.posix.sys.statvfs;.

一般来说,任何Posix C函数都在与换出的C 名相同的import core.sys.posix.something地方.something#cinlude/.

无论如何,这个小程序将打印出一些关于安装在"/"以下位置的文件系统的信息:

import core.sys.posix.sys.statvfs;
import std.stdio;

void main() {
        statvfs_t buf;

        if(statvfs("/", &buf))
                throw new Exception("failed");

        writeln(buf.f_bfree * buf.f_bsize, " free bytes");
        writeln(buf.f_blocks * buf.f_bsize, " total size in bytes");

        writeln((buf.f_bfree * buf.f_bsize) / 1024, " free KB");
        writeln((buf.f_blocks * buf.f_bsize) / 1024, " total size in KB");

        writeln(100 - (buf.f_bfree * 100 / buf.f_blocks), "% used");
}
Run Code Online (Sandbox Code Playgroud)

这是一个非常简单的函数调用.在Windows上,它是不同的,但同样容易:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa364937%28v=vs.85%29.aspx

只需调用该功能.我也可以为你写一个例子,如果你需要一个,但我现在没有,因为包含它的更新的Windows标题将在几周后的下一个D版本中被包括在内,所以你extern(Windows)现在必须要它......但是在几周内你就不必这么做了.