예제 #1
0
 public long GetSize()
 {
     return(_size
            ?? (_size = (IsDirectory)
             ? FileSystemHelpers.GetDirectorySize(Path)
             : ((FileInfo)FileSystemInfo).Length).Value);
 }
예제 #2
0
        protected void WriteProperties(SearchContext context, FileMatch fileMatch, ColumnWidths?columnWidths)
        {
            if (!ShouldLog(Verbosity.Minimal))
            {
                return;
            }

            if (!Options.Format.FileProperties.Any())
            {
                return;
            }

            StringBuilder sb = StringBuilderCache.GetInstance();

            if (columnWidths != null)
            {
                sb.Append(' ', columnWidths.NameWidth - fileMatch.Path.Length);
            }

            foreach (FileProperty fileProperty in Options.Format.FileProperties)
            {
                if (fileProperty == FileProperty.Size)
                {
                    sb.Append("  ");

                    long size = (fileMatch.IsDirectory)
                        ? (context.DirectorySizeMap?[fileMatch.Path] ?? FileSystemHelpers.GetDirectorySize(fileMatch.Path))
                                : new FileInfo(fileMatch.Path).Length;

                    string sizeText = size.ToString("n0");

                    if (columnWidths != null)
                    {
                        sb.Append(' ', columnWidths.SizeWidth - sizeText.Length);
                    }

                    sb.Append(sizeText);

                    context.Telemetry.FilesTotalSize += size;
                }
                else if (fileProperty == FileProperty.CreationTime)
                {
                    sb.Append("  ");
                    sb.Append(File.GetCreationTime(fileMatch.Path).ToString("yyyy-MM-dd HH:mm:ss"));
                }
                else if (fileProperty == FileProperty.ModifiedTime)
                {
                    sb.Append("  ");
                    sb.Append(File.GetLastWriteTime(fileMatch.Path).ToString("yyyy-MM-dd HH:mm:ss"));
                }
                else
                {
                    throw new InvalidOperationException($"Unknown enum value '{fileProperty}'.");
                }
            }

            Write(StringBuilderCache.GetStringAndFree(sb), Verbosity.Minimal);
        }