C# 如何找到WMP url的组合文件名和文件路径?
我在做一个音乐播放器。它有两种形式;第一个是典型的播放/停止/暂停界面。第二个表单有一个选中列表框来选择您的歌曲。一旦我点击第二个表单中的一个按钮,它就会填充一个文本文件,每一行都列出了我想要播放的每个mp3的名称。 所有的MP3都在同一个文件夹中。 如何将每一行分别与文件路径相结合 例如: 歌曲名称:疯狂 文件路径:C:\Users\Me\Desktop\JAM\u MACHINE\JAMS 结果:C:\Users\Me\Desktop\JAM\u MACHINE\JAMS\Crazy.mp3 这就是我所做的:C# 如何找到WMP url的组合文件名和文件路径?,c#,winforms,file,audio,wmp,C#,Winforms,File,Audio,Wmp,我在做一个音乐播放器。它有两种形式;第一个是典型的播放/停止/暂停界面。第二个表单有一个选中列表框来选择您的歌曲。一旦我点击第二个表单中的一个按钮,它就会填充一个文本文件,每一行都列出了我想要播放的每个mp3的名称。 所有的MP3都在同一个文件夹中。 如何将每一行分别与文件路径相结合 例如: 歌曲名称:疯狂 文件路径:C:\Users\Me\Desktop\JAM\u MACHINE\JAMS 结果:C:\Users\Me\Desktop\JAM\u MACHINE\JAMS\Crazy.mp3
string contents = File.ReadAllText(@"C:\Users\Me\Desktop\JAM_MACHINE\record.txt");
var fullPath = Path.GetFullPath(contents + ".mp3");
wplayer.URL = fullPath;
当我按下应该开始播放歌曲的按钮时,什么也没有发生
我尝试将第三行中的fullPath
替换为固定路径,即
wplayer.URL = @"C:\Users\Me\Desktop\JAM_MACHINE\JAMS\Crazy.mp3");
然后按下按钮播放,它就工作了。所以问题不在于播放按钮的编码
此外,当我按下按钮时,当我尝试第二个代码时,应该有一个按钮按下的声音。但是,当我尝试第一个代码时,没有声音
请帮我理解。以下是完整的代码供您参考:
`public PLAYER()
{
InitializeComponent();
}
WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();
WMPLib.WindowsMediaPlayer playSFX = new WMPLib.WindowsMediaPlayer();
WMPLib.WindowsMediaPlayer pauseSFX = new WMPLib.WindowsMediaPlayer(); //initialise all the sounds
DataRecord songRecord = new DataRecord();
private void PLAYER_Load(object sender, EventArgs e)//the event is actually PLAYER_Activated
{
string contents = File.ReadAllText(@"C:\Users\Me\Desktop\JAM_MACHINE\record.txt");
var fullPath = Path.GetFullPath(contents + ".mp3");
wplayer.URL = fullPath;
playSFX.URL = @"C:\Users\Me\Desktop\JAM_MACHINE\PLAY.wav";
pauseSFX.URL = @"C:\Users\Me\Desktop\JAM_MACHINE\PAUSE.wav";
wplayer.controls.stop();
playSFX.controls.stop();
pauseSFX.controls.stop();
}
private void playbtn_Click(object sender, EventArgs e)
{
playSFX.controls.play();
wplayer.controls.play();
}
private void pausebtn_Click(object sender, EventArgs e)
{
pauseSFX.controls.play();
wplayer.controls.pause();
}
private void stopbtn_Click(object sender, EventArgs e)
{
pauseSFX.controls.play();
wplayer.controls.stop();
this.Visible = false;
JAMS JAMS = new JAMS();
JAMS.ShowDialog();
if(JAMS.Visible == false)//if jams isnt open, open it
{
this.Visible = true;
}
}`
如果records.txt文件看起来有点像这样:
myFirstSong
mySecondSong
myThirdSong
Crazy
通过执行以下操作,可以获取所有文件路径:
private IEnumerable<string> GetFileList(string pathToRecords)
{
var directory = new FileInfo(pathToRecords).DirectoryName;
var songNames = File.ReadAllLines(pathToRecords);
var filePaths = songNames.Select(songName => Path.Combine(directory, songName + ".mp3"));
return filePaths;
}
然后,您可以将播放器url设置为列表中的一个路径:
var songPaths = GetFileList(@"c:\x\records.txt").ToList();
var firstSong = songPaths[0];
wplayer.URL = firstSong;
依此类推列表中剩余的歌曲。如果您从
目录中的文件中读取的内容是C:\Users\Me\Desktop\JAM\u MACHINE\JAMS
,那么您在代码中的何处添加歌曲标题,如Crazy
?
var songPaths = GetFileList(@"c:\x\records.txt").ToList();
var firstSong = songPaths[0];
wplayer.URL = firstSong;