Дисковое пространство в общей папке с использованием kernel32 dll по сравнению со свойством - PullRequest
0 голосов
/ 08 мая 2019

У меня есть общая папка в сети, в которой я хочу узнать ее общий размер, а также процент памяти, используемой из определенной папки.

В данный момент я использую этот код.

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% хранилища, используя свойства папок через Проводник.Что это значит?Который более доверчив?

...