3

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

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

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

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

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

在这个方向上的任何帮助表示赞赏。如果它解决了我的问题,我愿意接受新方法。

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

4

2 回答 2

0

我假设有两种方法可以解决这个问题,具体取决于您尝试做的事情的规模。

如果您真的只想列出文件夹中的所有文件,请使用 Directory.GetFiles(path) 方法 - 您可以过滤掉任何不是 .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 文件相当简单。然后,您可以从那里读取文件列表。

于 2013-07-30T07:34:47.850 回答
0

正如 evilbhonda 所说,您可以使用 XML,但可以将其存储在可用于 WPF 的 IsolatedStorage 中。如何使用独立存储(存储仅适用于您的应用程序 独立存储简单演示 可以使用 DataContracts 将轨道列表序列化为 XML,例如:

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

DataContracts 的序列化和反序列化在此处描述 -> DataContracts 的 序列化和反序列化

于 2013-07-30T07:48:52.993 回答