Exemple #1
0
        /// <summary>
        /// get directory size info form du.exe/du64.exe
        /// we will use size not size on disk to keep same with
        /// C# DirectoryInfo report
        /// du.exe output example:
        /// Files:        130552
        /// Directories:  45942
        /// Size:         16,113,239,255 bytes
        /// Size on disk: 14,142,668,800 bytes
        /// </summary>
        /// <param name="directoryCache"></param>
        /// <returns></returns>
        internal static DirectoryCache LoadDirectoryInfoByCmd(DirectoryCache directoryCache)
        {
            var output = CmdHelper.ExecDiskUsage(directoryCache.Uri);

            // check if du.exe return "", means a junction
            if (output == "")
            {
                return(directoryCache);
            }

            // make windows "\r\n" to "\n" only
            output = output.Replace("\r", "");

            var sizeStr = output.Split("\n")[2].Trim();

            sizeStr = sizeStr.Replace("Size: ", "").Replace("bytes", "");

            if (ulong.TryParse(sizeStr, out var size))
            {
                directoryCache.Length = size;
            }

            return(directoryCache);
        }