gpt4 book ai didi

c# - 如何找到WMP网址的文件名和文件路径?

转载 作者:行者123 更新时间:2023-12-03 01:45:04 24 4
gpt4 key购买 nike

我正在做音乐播放器。它有两种形式:第一个是典型的播放/停止/暂停界面。第二种形式有一个 list 框,可以选择您的歌曲。单击第二个表单中的按钮后,它将填充一个文本文件,每一行列出了我要播放的每个mp3的名称。
所有的mp3都在同一个文件夹中。
如何将每一行分别与文件路径结合起来?

例如:

歌曲名称:Crazy

文件路径:C:\ Users \ Me \ Desktop \ JAM_MACHINE \ JAMS

结果:C:\ Users \ Me \ Desktop \ JAM_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;
}

如果pathToRecords为“c:\ x \ records.txt”,则返回的列表如下所示。
c:\x\myFirstSong.mp3
c:\x\mySecondSong.mp3
c:\x\myThirdSong.mp3
c:\x\Crazy.mp3

然后,您可以将播放器网址设置为列表中的路径之一:
var songPaths = GetFileList(@"c:\x\records.txt").ToList();
var firstSong = songPaths[0];
wplayer.URL = firstSong;

以此类推,查看列表中剩余的歌曲。

关于c# - 如何找到WMP网址的文件名和文件路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44245505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com