I'm stuck at this problem I would really appreciate if someone can help me solve this problem.
I want to add spaces for sub-folder like this format down below.(it must be done with recursion)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace G14_211115
{
class Program
{
static void Main(string[] args)
{
string path = @"C:\Program Files\FinchVPN";
WriteDirectories(path);
Console.ReadKey();
}
/* Tasks.
* 1. I want to add spaces for subfolder like this format down below. ( it must be done with recursion)
* Like this
* --------------------------------------------------------------
* Folder 1
* Folder 1.1
* Folder 1.2
* Folder 2
* Folder 2.1
* Folder 2.1.1
* Folder 2.2
* Folder 3
* Folder 4
*
* 2. Task 2 I want to retype this code without using recurrence and C# inbuilt functions.
*/
static void WriteDirectories(string path)
{
string[] dirs = Directory.GetDirectories(path);
for(int i = 0; i < dirs.Length; i++)
{
Console.WriteLine(dirs[i]);
WriteDirectories(dirs[i]);
}
}
}
}
There are two commands that insert horizontal blank spaces in this example: \hspace{1cm} Inserts a horizontal space whose length is 1cm. Other LaTeX units can be used with this command.
The \\ command tells LaTeX to start a new line. It has an optional argument, extra-space, that specifies how much extra vertical space is to be inserted before the next line. This can be a negative amount.
Press ALT+ENTER to insert the line break.
As you are calling WriteDirectories
recursivly, you can pass a variable to each call indicating the (recursion)level
. Using this you can just put some spaces before the output.
Therefore you would need to modify your code like this:
static void WriteDirectories(string path, int level = 0)
{
string[] dirs = Directory.GetDirectories(path);
for (int i = 0; i < dirs.Length; i++)
{
for (int j = 0; j < level; j++)
{
Console.Write(" ");
}
Console.WriteLine(dirs[i]);
WriteDirectories(dirs[i], (level + 1));
}
}
If you want more than just one space per level you can simply modify the inner loop, j < 2 * level
would give you 2 space characters per level, and so on.
Update (Thanks to David)
Instead of the inner loop you can use new string(' ', level)
for creating a new string containing the specified character level
-times.
So the inner for
-loop would be replaced by Console.Write(new string(' ', level));
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With