GetFiles()不返回目录C中的第一个文件名#
问题描述:
我正在编写一个测试脚本以用于较大的脚本。我需要获取音乐目录中的第一个文件,以便我可以自动打开wmplayer并播放第一首歌曲。GetFiles()不返回目录C中的第一个文件名#
如果我硬编码的文件名称,并启动过程,它的工作原理。但是,如果其他人想使用脚本,我需要获取第一个文件名。例如,我的硬编码的版本是:
Process.Start("wmplayer.exe", "C:\\Users\\" + username + "\\Music\\A_ChillstepMix.mp3");
当我试图让音乐文件夹的第一个文件在我的测试脚本,它返回一个在图片:
这是不正确的!我究竟做错了什么?这里是我的代码片段:
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();
我没想到的排序依据()方法存在。非常感谢你的帮助。它工作完美。 – IRGeekSauce
另外考虑使用'EnumerateFiles'而不是'GetFiles'。 – mjwills