C# GetFiles()未返回目录C中的第一个文件名#
我正在编写一个测试脚本,以便在更大的脚本中使用。我需要得到音乐目录中的第一个文件,这样我就可以自动打开wmplayer并播放第一首歌曲 如果我硬编码文件名并启动进程,它就会工作。但是,如果其他人想要使用该脚本,我需要获取第一个文件名。例如,我的硬编码版本是:C# GetFiles()未返回目录C中的第一个文件名#,c#,console-application,getfiles,C#,Console Application,Getfiles,我正在编写一个测试脚本,以便在更大的脚本中使用。我需要得到音乐目录中的第一个文件,这样我就可以自动打开wmplayer并播放第一首歌曲 如果我硬编码文件名并启动进程,它就会工作。但是,如果其他人想要使用该脚本,我需要获取第一个文件名。例如,我的硬编码版本是: Process.Start("wmplayer.exe", "C:\\Users\\" + username + "\\Music\\A_ChillstepMix.mp3"); 当我尝试获取测试脚本中音乐文件夹中的第一个文件时,它将返回图
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();
我不知道OrderBy()方法的存在。非常感谢你的帮助。它工作得很好。还考虑使用<代码> EnumerateFiles <代码>而不是<代码> GETFrase。