Skip to content

Commit f6b82e7

Browse files
committed
Improve directory tree display in console output
Enhanced the PrintDirectory method to display a more visually structured directory tree using new symbols for branches and lines. Updated ConsoleSymbols to include line, tree branch, tree end, and tree pipe characters for improved formatting.
1 parent a4a86ad commit f6b82e7

2 files changed

Lines changed: 18 additions & 9 deletions

File tree

src/Program.cs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -111,19 +111,24 @@ private static async Task<long> GetDirectorySizeAsync(DirectoryInfo directoryInf
111111

112112
private static void PrintDirectory(string directory, long directorySize, List<FileObject> fileObjects)
113113
{
114-
int sizeIndent = fileObjects.Max(x => x.Name.Length) + 5;
114+
int sizeIndent = Math.Max(fileObjects.Max(x => x.Name.Length), directory.Length) + 5;
115115

116-
string directoryName = $"{ConsoleColors.Blue}{directory.PadRight(sizeIndent)}";
116+
string directoryName = $"{ConsoleColors.Blue}{directory}{ConsoleColors.Reset}";
117117
string directorySizeText = $"{ConsoleColors.Yellow}{Utils.GetSizeText(directorySize)}";
118-
Console.WriteLine($"{ConsoleSymbols.Folder} {directoryName} {directorySizeText}{ConsoleColors.Reset}");
119-
120-
foreach (FileObject fileObj in fileObjects)
118+
int lineLength = sizeIndent - directoryName.Length + 10;
119+
string line = new string(ConsoleSymbols.Line[0], lineLength);
120+
Console.WriteLine($"{ConsoleSymbols.Folder} {directoryName} {line} {directorySizeText}{ConsoleColors.Reset}");
121+
122+
for (int i = 0; i < fileObjects.Count; i++)
121123
{
122-
string icon = fileObj.IsDirectory ? ConsoleSymbols.Folder : ConsoleSymbols.File;
123-
string fileName = $"{ConsoleColors.Cyan}{fileObj.Name.PadRight(sizeIndent)}";
124-
string fileSize = $"{ConsoleColors.Yellow}{Utils.GetSizeText(fileObj.SizeInBytes)}";
124+
FileObject fileObject = fileObjects[i];
125+
126+
string treeSymbol = i == fileObjects.Count - 1 ? ConsoleSymbols.TreeEnd : ConsoleSymbols.TreeBranch;
127+
string icon = fileObject.IsDirectory ? ConsoleSymbols.Folder : ConsoleSymbols.File;
128+
string fileName = $"{ConsoleColors.Cyan}{fileObject.Name.PadRight(sizeIndent - treeSymbol.Length - 1)}";
129+
string fileSize = $"{ConsoleColors.Yellow}{Utils.GetSizeText(fileObject.SizeInBytes)}";
125130

126-
Console.WriteLine($"{icon} {fileName} {fileSize}{ConsoleColors.Reset}");
131+
Console.WriteLine($"{treeSymbol} {icon} {fileName} {fileSize}{ConsoleColors.Reset}");
127132
}
128133
}
129134
}

src/scripts/ConsoleSymbols.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@
22
{
33
public const string Folder = "\ud83d\udcc1";
44
public const string File = "\ud83d\udcc4";
5+
public const string Line = "\u2500";
6+
public const string TreeBranch = $"\u251c{Line}{Line}";
7+
public const string TreeEnd = $"\u2514{Line}{Line}";
8+
public const string TreePipe = "\u2502";
59
}

0 commit comments

Comments
 (0)