GetFiles()不返回目录C中的第一个文件名#

问题描述:

我正在编写一个测试脚本以用于较大的脚本。我需要获取音乐目录中的第一个文件,以便我可以自动打开wmplayer并播放第一首歌曲。GetFiles()不返回目录C中的第一个文件名#

如果我硬编码的文件名称,并启动过程,它的工作原理。但是,如果其他人想使用脚本,我需要获取第一个文件名。例如,我的硬编码的版本是:

Process.Start("wmplayer.exe", "C:\\Users\\" + username + "\\Music\\A_ChillstepMix.mp3"); 

当我试图让音乐文件夹的第一个文件在我的测试脚本,它返回一个在图片:

Wrong File Being Accessed

这是不正确的!我究竟做错了什么?这里是我的代码片段:

using System; 
using System.IO; 
using System.Linq; 

namespace GetFileTest 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      String username = Environment.UserName; 
      String path = @"C:\Users\" + username + @"\Music"; 
      DirectoryInfo di = new DirectoryInfo(path); 
      string firstFile = di.GetFiles().Select(fi => fi.Name).FirstOrDefault(); 

      Console.WriteLine(firstFile);    
     }   
    } 
} 

我也曾尝试:

string firstFile = di.GetFiles()[0].ToString(); 

无济于事。这与单引号有关吗?

您必须选择的第一个和以前的文件名排序:

di.GetFiles().OrderBy(fi => fi.Name).Select(fi => fi.Name).FirstOrDefault(); 
+0

我没想到的排序依据()方法存在。非常感谢你的帮助。它工作完美。 – IRGeekSauce

+2

另外考虑使用'EnumerateFiles'而不是'GetFiles'。 – mjwills