在C#中创建音乐库和播放列表

时间:2013-07-30 06:54:32

标签: c# wpf csv media-player playlist

我正在使用WPF在C#中开发MP3播放器。

我已成功添加播放,暂停,停止,下一个,上一个并将文件添加到列表功能。

但每次打开播放器时,我都必须使用添加文件按钮手动添加文件。

我想要的是,就像iTunes一样,在打开播放器时,所有mp3文件都应该从文件夹中加载并显示在“列表框”中。 (就像预装的音乐库一样)

我不打算使用任何数据库 这可以使用CSV文件完成。我尝试使用此处指定的代码How to create CSV Excel file C#?,但无法使其正常工作。 (有很多问题因此我没有在这里指定)

对此方向表示赞赏。如果能解决我的问题,我愿意接受新的方法。

P.S。我还想添加从这个音乐库制作自定义播放列表的功能。我们也欢迎在这方面提供更多帮助。

2 个答案:

答案 0 :(得分:0)

我认为有两种方法可以解决这个问题,具体取决于你要做的事情的规模。

如果您确实只想列出文件夹中的所有文件,请使用Directory.GetFiles(路径)方法 - 您可以过滤掉任何不是.mp3文件的内容,并列出它们。

但是,我觉得你想构建单独的播放列表(如果我错了,请纠正我),在这种情况下,是的,你需要在某处存储文件列表。

我会避免使用CSV,因为您可以在那里存储的数据受到限制。我会选择XML。创建类似于 -

的XML
<xml>
 <playlist name="playlist1">
  <file path="C:\file1.mp3"/>
  <file path="C:\file2.mp3"/>
  <file path="C:\file3.mp3"/>
 </playlist>
</xml>

或者在那里存储你想要的任何东西。使用XDocument创建XML文件非常简单。然后,您可以从那里读取文件列表。

答案 1 :(得分:0)

正如evilbhonda所说,您可以使用XML,但您可以将其存储在可用于WPF的IsolatedStorage中。 如何使用IsolatedStorage(存储仅适用于您的applcia Isolated Storage simple demo 可以使用DataContracts将轨道列表序列化为XML,例如:

[DataContract]
public class MusicTrack
{
    [DataMember]
    public string TrackName { get; set; }
    [DataMember]
    public string TrackPath { get; set; }
}

此处描述了DataContracts的序列化和反序列化 - &gt; Serialization and Deserialization of DataContracts