2012-02-25 8 views
1

次のコードで何が問題なのか教えていただけますか?VB.netのID3タグ

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行目に私は入れません:

試みは、ファイルの先頭よりも前にファイルポインタを移動しました。

答えて

1

私の推測では、ファイルは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を使用してコードを試みただけのために、それは歌のタイトルを抽出しました。 Seekを実行する前にストリームの長さを確認する必要があることを繰り返し述べます。たとえば、私が使った曲の長さは8414449でした。

2

ID3タグを読み書きするにはTagLib#を使うべきです。

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 StudioのPackage Manager Consoleで次のコマンドを実行します。

PM> Install-Package taglib 

タグライブラリシャープのNuGet分布はhttp://nuget.org/packages/taglibで見つけることができます。正式なソースコードリポジトリはhttps://github.com/mono/taglib-sharpです。

関連する問題