这是我的问题。我正在使用C#,我应该设计一个运行目录并列出其中所有子目录和文件的程序。我已经得到了基本代码,如下所示:
namespace DirectorySearch
{
class DirectorySearch
{
const string PATH = @"C:\Directory Search";
static void Main(string[] args)
{
DirSearch(PATH);
}
static void DirSearch(string dir)
{
try
{
foreach (string f in Directory.GetFiles(dir))
Console.WriteLine(f);
foreach (string d in Directory.GetDirectories(dir))
{
Console.WriteLine(d);
DirSearch(d);
}
}
catch (System.Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
我遇到的问题是我应该使用stringName.Split('/')。最后输出全部在一条直线上,但我不知道将它放在代码中的哪个位置。输出应该看起来像:
C:\Directory Search
File1.txt
File2.txt
Folder1
Folder2
File3.txt
Folder3
等等......我很确定在弄清楚如何拆分它们之后,我可以弄清楚如何使标签工作。任何帮助将不胜感激。
答案 0 :(得分:1)
你只需要使用Path.GetFilename
返回目录名(对于目录)或文件名,扩展名为
foreach (string f in Directory.GetFiles(dir))
Console.WriteLine(Path.GetFileName(f));
foreach (string d in Directory.GetDirectories(dir))
{
Console.WriteLine(Path.GetFileName(d));
DirSearch(d);
}
答案 1 :(得分:1)
试试这个
Console.WriteLine(f.Split('\\').Last());
答案 2 :(得分:1)
我不确定你是否在寻找这样的东西,但你可以试试这段代码
namespace DirectorySearch
{
class DirectorySearch
{
const string PATH = @"C:\Directory Search";
static void Main(string[] args)
{
Console.WriteLine(PATH);
DirSearch(PATH);
}
static void DirSearch(string dir, int depth = 1)
{
try
{
string indent = new string('\t', depth);
foreach (string f in Directory.GetFiles(dir))
Console.WriteLine(indent + f.Split('\\').Last());//using split
//Console.WriteLine(indent + Path.GetFileName(f));//using Get File name
foreach (string d in Directory.GetDirectories(dir))
{
Console.WriteLine(indent + d.Split('\\').Last()); //using split
//Console.WriteLine(indent + Path.GetFileName(d)); //using Get File name
DirSearch(d, depth++);
}
}
catch (System.Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
希望这能帮到你!