首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ID3标记在VB.net中

ID3标记在VB.net中
EN

Stack Overflow用户
提问于 2012-02-25 10:59:46
回答 2查看 2.6K关注 0票数 1

有人能告诉我下面的代码有什么问题吗?

代码语言:javascript
运行
复制
    Dim mp As FileStream
    Dim Title(30) As Byte
    mp = New FileStream(My.Computer.FileSystem.SpecialDirectories.MyMusic & "\Set List Planner\Tracks" & filename, FileMode.Open)
    mp.Seek(-125, SeekOrigin.End)
    mp.Read(Title, 0, 30)

    Me.songName = System.Text.Encoding.ASCII.GetString(Title)

在第4行,我一直得到:

尝试在文件开始之前移动文件指针。

EN

回答 2

Stack Overflow用户

发布于 2012-02-25 15:44:50

我的猜测是,您的文件长度小于125字节。您正在尝试将流位置移到文件结束之前的125字节。在试图移动您的流位置之前,我会检查文件的Length。例如:

代码语言:javascript
运行
复制
Dim mp As FileStream
Dim Title(30) As Byte
mp = New FileStream(My.Computer.FileSystem.SpecialDirectories.MyMusic & "\Set List Planner\Tracks" & filename, FileMode.Open)
If mp.Length >= 125 Then
    mp.Seek(-125, SeekOrigin.End)
    mp.Read(Title, 0, 30)
    Me.songName = System.Text.Encoding.ASCII.GetString(Title)
End If

顺便提一句,我使用示例Mp3尝试了您的代码,以确保我不是轻率的,它确实提取了歌曲的标题。我想重申的是,在进行搜索之前,您需要验证您的流的长度。例如,我使用的歌曲的长度是8414449。

票数 2
EN

Stack Overflow用户

发布于 2012-08-15 09:25:15

您确实应该研究如何使用TagLib#来读取和编写ID3标记。那么,它就像:

代码语言:javascript
运行
复制
Dim _MP3FilePath As String = My.Computer.FileSystem.SpecialDirectories.MyMusic & "\Set List Planner\Tracks" & filename
Dim _MP3File As TagLib.File = TagLib.File.Create(_MP3FilePath)
Me.songname = _MP3File.Tag.Title

要引用taglib夏普库,您必须首先通过NuGet安装它。若要安装TagLib#,请在Visual中的Package控制台中运行以下命令。

代码语言:javascript
运行
复制
PM> Install-Package taglib

标签库的NuGet分布可以在http://nuget.org/packages/taglib上找到.正式的源代码存储库位于https://github.com/mono/taglib-sharp

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9443397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档