【问题标题】:Create Music library and Playlists in C#在 C# 中创建音乐库和播放列表
【发布时间】:2013-07-30 04:42:36
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

  • 到目前为止你尝试过什么?没错,CSV 文件是一种好方法……但我不明白,如果您不向我们展示您的代码,我们将如何提供帮助……
  • 我在上面指定了一个链接。我使用该代码并修改 File.WriteAllText 被 File.AppendAllText 替换,因为 WriteAllText 用新文件替换了旧文件。我也想在 CSV 文件中只存储唯一值。

标签: c# wpf csv media-player playlist


【解决方案1】:

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

如果您真的只想列出文件夹中的所有文件,请使用 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 文件相当简单。然后,您可以从那里读取文件列表。

【讨论】:

  • 是的,我想建立个人播放列表是对的。但是,因为它在 iTunes 中,您只需从主歌曲库中选择音频文件,然后将其拖放到您创建的播放列表中。拖放不是必需的,但是从主库创建东西很重要。
  • 好东西。如果您可以在 C# 中建立要包含在播放列表中的文件的列表,则可以相当容易地将其转换为 XML(只需对 C# 中的 XML 创建进行一些研究)。但是,如何构建该列表完全取决于您。不过拖放应该是可能的 - MSDN 上有一篇不错的文章 - link
【解决方案2】:

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

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

这里描述了 DataContracts 的序列化和反序列化 -> Serialization and Deserialization of DataContracts

【讨论】:

    猜你喜欢
    • 2020-09-03
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    相关资源
    最近更新 更多