我在处理Windows文件系统方面还是新手,这几天一直卡在一个问题上。我正在使用C#编码,想要获取目录的确切“磁盘空间大小”,就像在Windows 7上目录属性对话框中显示的那样。
现在我能够获得一个粗略的数字,通过遍历目录中的每个文件和子目录,使用API GetCompressedFileSize
来获取压缩文件的大小,在普通文件的情况下使用FileInfo.Length
属性,并将其舍入为簇大小的倍数。
我发现有些文件共享簇(?)(磁盘空间大小不是簇大小的倍数),而其他文件则单独占用簇,然后我无法获得确切的磁盘空间大小,无论是将大小舍入为簇大小的倍数还是不舍入。
还有符号链接不占用磁盘空间,我找不到区分它们和普通目录的方法。我得到的大小比实际大小大得多,因为我无法避免计算这些链接的大小。
我猜测必须有一个API或其他方法来获取确切的文件或目录的磁盘空间大小。那是什么?还是有更简单/更快的方法吗?感谢您的帮助!