public long GetSize() { return(_size ?? (_size = (IsDirectory) ? FileSystemHelpers.GetDirectorySize(Path) : ((FileInfo)FileSystemInfo).Length).Value); }
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); }