我正在使用WPF在C#中开发MP3播放器。
我已成功添加播放,暂停,停止,下一个,上一个并将文件添加到列表功能。
但每次打开播放器时,我都必须使用添加文件按钮手动添加文件。
我想要的是,就像iTunes一样,在打开播放器时,所有mp3文件都应该从文件夹中加载并显示在“列表框”中。 (就像预装的音乐库一样)
我不打算使用任何数据库 这可以使用CSV文件完成。我尝试使用此处指定的代码How to create CSV Excel file C#?,但无法使其正常工作。 (有很多问题因此我没有在这里指定)
对此方向表示赞赏。如果能解决我的问题,我愿意接受新的方法。
P.S。我还想添加从这个音乐库制作自定义播放列表的功能。我们也欢迎在这方面提供更多帮助。
答案 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