我编写了这段代码,它有效,但有两个我想要实现的功能,我无法了解如何。
第一: 如何在每首歌曲之前添加索引编号,使其如下所示:
- 松1
- Song2
- Song3
醇>
第二: 输出到文件包括文件的路径。如何删除它?
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string[] files = Directory.GetFiles("E:\\Music", "*", SearchOption.AllDirectories);
foreach (string file in files)
{
string FileName = Path.GetFileName(file);
Console.WriteLine(FileName);
System.IO.File.WriteAllLines("E:\\songs.txt", (files));
}
Console.WriteLine("Press any key to exit");
Console.ReadLine();
}
}
}
答案 0 :(得分:1)
因此,为了只编写歌曲的名称而不是整个路径,您必须使用Path.GetFileNameWithoutExtensions
。
要在每首歌曲之前编写索引,您必须切换到for循环(以使用索引)。
另一个问题是你为每首歌写了songs.txt
,这很糟糕。这是帮助您解决问题的代码:
string[] files = Directory.GetFiles(@"C:\Users\Admin\Music\Playlists", "*", SearchOption.AllDirectories);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < files.Length; i++)
{
sb.AppendLine($"{i + 1}. {Path.GetFileNameWithoutExtension(files[i])}");
// Each line will be something like: Number. NameOfTheSong
}
// Only save to the file when everything is done
File.WriteAllText("E:\\songs.txt", sb.ToString());
Console.WriteLine("Press any key to exit");
Console.ReadLine();
答案 1 :(得分:0)
首先,我认为您对此行有疑问:
System.IO.File.WriteAllLines("E:\\songs.txt", (files));
因为在每个循环中你都在写文件songs.txt
关于新功能:
要获取索引,一种简单的方法是通过foreach
循环更改for
循环。
要获取文件名,您可以使用Path.GetFileName()
或Path.GetFileNameWithoutExtension()
我希望这可以帮到你。