2015-02-10 68 views
-1

我有過一組文件夾的瀏覽,並試圖設置ID3TAG性質的小控制檯應用程序。TAGLIB - 類型「System.StackOverflowException」未處理的異常出現在mscorlib.dll

ScrPathn專輯和藝術家是字符串常量。

static void Main(string[] args) 
{ 
      List<string> dirs = new List<string>(Directory.EnumerateDirectories(SrcPath)); 

      foreach (var dir in dirs) 
      { 
       string ParentDirOfFile = dir.Substring(dir.LastIndexOf("\\") + 1); 
       List<string> files = new List<string>(Directory.EnumerateFiles(dir)); 
       foreach (var file in files) 
       { 
        string filename = Path.GetFileName(file); 
        string destfile = Path.Combine(SrcPath, ParentDirOfFile + "_" + filename); 
        var fs = new FileStream(destfile, FileMode.Open); 
        using (var tagFile = TL.File.Create(new TL.StreamFileAbstraction(destfile, fs, fs))) 
        { 
         tagFile.Tag.Album = Album; 
         tagFile.Tag.Title = Path.GetFileNameWithoutExtension(destfile); 
         tagFile.Tag.AlbumArtists = new string[] { Artist }; 
         tagFile.Save(); 
        } 
       } 
      } 
      Console.ReadLine(); 
     } 

在保存步我得到:

System.StackOverflowException了未處理 消息:類型System.StackOverflowException「未處理的異常出現在mscorlib.dll

我使用我通過NuGet安裝了TagLig的最新版本。 任何建議?

編輯。 沒有額外的信息由VS給出。

更改代碼以拆分讀取寫入流。

var readfs = new FileStream(destfile, FileMode.Open); 
var writefs = new FileStream(Path.Combine(SrcPath, "_" + ParentDirOfFile + "_" + filename), FileMode.Create); 
using (var tagFile = TL.File.Create(new TL.StreamFileAbstraction(destfile, readfs, writefs))) 

相同的錯誤和一個空的新文件被創建。

+0

是否扔在第一次打救? – TaW 2015-02-10 18:58:06

+0

是的。在第一時間。 – BrilBroeder 2015-02-11 12:39:16

回答

0

我不能說我完全理解你的代碼,但我知道,在這裏這個簡單的版本確實沒有工作:

using (var tagFile = TagLib.File.Create(destfile)) 
    { 
     tagFile.Tag.Album = Album; 
     tagFile.Tag.Title = Path.GetFileNameWithoutExtension(destfile); 
     tagFile.Tag.AlbumArtists = new string[] { Artist }; 
     tagFile.Save(); 
    } 
相關問題