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

时间:2016-01-02 16:36:39

标签: size d partition

我需要在分区上获得总数和免费大小。我怎么能用D得到它? 我应该使用哪些功能?

2 个答案:

答案 0 :(得分:5)

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

一般来说,任何Posix 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");
}

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

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

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

答案 1 :(得分:1)

它肯定是特定于操作系统的。在Linux系统上,您需要statfs(2)系统调用(在C中)。您可能需要在C& C之间制作胶水代码。 D你自己。