输出索引号并从文件中删除路径

时间:2017-12-06 20:01:41

标签: c#

我编写了这段代码,它有效,但有两个我想要实现的功能,我无法了解如何。

第一: 如何在每首歌曲之前添加索引编号,使其如下所示:

  
      
  1. 松1
  2.   
  3. Song2
  4.   
  5. Song3
  6.   

第二: 输出到文件包括文件的路径。如何删除它?

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();   

        }
    }
}

2 个答案:

答案 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()

我希望这可以帮到你。