有人能告诉我下面的代码有什么问题吗?
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行,我一直得到:
尝试在文件开始之前移动文件指针。
发布于 2012-02-25 15:44:50
我的猜测是,您的文件长度小于125字节。您正在尝试将流位置移到文件结束之前的125字节。在试图移动您的流位置之前,我会检查文件的Length
。例如:
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。
发布于 2012-08-15 09:25:15
您确实应该研究如何使用TagLib#来读取和编写ID3标记。那么,它就像:
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控制台中运行以下命令。
PM> Install-Package taglib
标签库的NuGet分布可以在http://nuget.org/packages/taglib上找到.正式的源代码存储库位于https://github.com/mono/taglib-sharp。
https://stackoverflow.com/questions/9443397
复制相似问题