与属性相比,使用kernel32 dll的共享文件夹上的磁盘空间

时间:2019-05-08 04:19:57

标签: c# windows explorer kernel32

我在网络上有一个共享文件夹,我想知道该文件夹的总大小以及特定文件夹使用的内存百分比。

此刻我正在使用此代码。

namespace DiskFreeSpaceEx
{
    internal class FreeSpace
    {
        [DllImport("kernel32")]
        public static extern int GetDiskFreeSpaceEx(string lpDirectoryName, ref long lpFreeBytesAvailable, ref long lpTotalNumberOfBytes, ref long lpTotalNumberOfFreeBytes);
        const string RootPathName = @"\\Server\Sharename\Folder\Subfolder\...\TargetFolder";
        private static void Main(string[] args)
        {
            long freeBytesAvailable = 0;
            long totalNumberOfBytes = 0;
            long totalNumberOfFreeBytes = 0;

            GetDiskFreeSpaceEx(RootPathName, ref freeBytesAvailable, ref
               totalNumberOfBytes, ref totalNumberOfFreeBytes);

            Console.WriteLine("{0}\t{1}\t{2}\t{3}", RootPathName,
                freeBytesAvailable, totalNumberOfBytes, totalNumberOfFreeBytes);

            long percentage = (totalNumberOfBytes - freeBytesAvailable) * 100 / totalNumberOfBytes;

            Console.WriteLine(percentage.ToString());
            Console.ReadKey();
        }
    }
}

通过这种配置,我的使用率达到了86%(这意味着其容量的86%充满了数据,而〜14%的空间是免费的)

来源:https://docs.microsoft.com/ja-jp/windows/desktop/api/FileAPI/nf-fileapi-getdiskfreespaceexa

但是后来我通过资源管理器使用文件夹属性找出了99.8%的存储空间。这是什么意思?哪个更信任?

0 个答案:

没有答案