2017-10-08 62 views
4

我正在編寫一個測試腳本以用於較大的腳本。我需要獲取音樂目錄中的第一個文件,以便我可以自動打開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(); 

無濟於事。這與單引號有關嗎?

回答

4

您必須選擇的第一個和以前的文件名排序:

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

我沒想到的排序依據()方法存在。非常感謝你的幫助。它工作完美。 – IRGeekSauce

+2

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

相關問題