C# 如何从C中的目录中获取文件列表#
所以,我正在用C#编写mp3播放器,但我面临一个问题。 我想从列表中的目录中获取所有文件,以便您可以选择 你想播放的歌曲 这是获取文件的代码↓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
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;