Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从C中的目录中获取文件列表#_C#_Windows - Fatal编程技术网

C# 如何从C中的目录中获取文件列表#

C# 如何从C中的目录中获取文件列表#,c#,windows,C#,Windows,所以,我正在用C#编写mp3播放器,但我面临一个问题。 我想从列表中的目录中获取所有文件,以便您可以选择 你想播放的歌曲 这是获取文件的代码↓ string[] music = Directory.GetFiles(dir, "*.mp3"); 还有玩它↓ WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer(); wplayer.URL = String.Join(" ", music); wplayer.cont

所以,我正在用C#编写mp3播放器,但我面临一个问题。 我想从列表中的目录中获取所有文件,以便您可以选择 你想播放的歌曲

这是获取文件的代码↓

string[] music = Directory.GetFiles(dir, "*.mp3");
还有玩它↓

WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();
wplayer.URL = String.Join(" ", music);
wplayer.controls.play();
如果文件夹中只有一个文件,则此选项有效,但一旦文件夹中有多个文件,则此选项无效

因此,我认为解决方案是将列表中的所有文件设置为从0开始,到go's on on on结束,直到不再有歌曲为止。然后一切又重新开始

但是,我该怎么做呢


提前谢谢

您已经通过以下方式获得了所需的所有文件:

string[] music = Directory.GetFiles(dir, "*.mp3");
GetFiles
返回文件夹中的所有文件,如果您的搜索模式为
*mp3
,它将返回所有mp3文件

问题是,您不需要对文件执行
string.Join
,而是逐个播放:

foreach (var musicurl in music){
    WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();
    wplayer.URL = musicurl; //get one by one
    wplayer.controls.play();
    //Logic to control how long a music is to be played
}
当前逻辑仅在文件夹中只有一个MP3文件时才起作用的原因是您使用的
字符串.Join

举例来说,这就是当您有多个文件时,
字符串.Join
在您的
音乐
中的作用。假设您的
音乐
包括:

C:\music1.mp3
C:\music2.mp3
当您执行
string.Join
时,您的URL变为:

C:\music1.mp3 C:\music2.mp3
因此,你不能播放音乐。但当您只有一个文件时,字符串联接不会影响:

C:\music1.mp3

@LuukWuijster注意到我放了:
//控制音乐播放时间的逻辑
你需要添加一些东西来控制如何选择下一首歌。哦,是的,我明白了。但我能想到的唯一一件事(以及我所做的)是获得赛道的时间,然后等待任务;难道没有更有效的方法吗?@LuukWuijster这当然是一种选择。为什么不只需为转换添加多一点延迟(例如,1秒)
WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();
WMPLib.IWMPPlaylist playlist = wplayer.playlistCollection.newPlaylist("playlist");

string[] music = Directory.GetFiles(dir, "*.mp3");

foreach (string file in music)
{
    WMPLib.IWMPMedia media = wplayer.newMedia(file);
    playlist.appendItem(media);
}

wplayer.currentPlaylist = playlist;