Проблема сохранения MP3 с новыми тегами ID3 - PullRequest
0 голосов
/ 23 июня 2011

Я использую ID3lib и MP3Lib их примеров (http://id3lib.sourceforge.net/) Когда я редактирую свои MP3, это иногда работает, а иногда нет. Тогда я получаю исключение, что Файл не может быть переписан. Файлы не используются. Я думаю, проблема в том, что я установил теги ID3v2 через библиотеку и что MP3 могут быть только с заголовком ID3v1? У кого-нибудь были такие проблемы раньше?

EDIT: Мне удалось найти проблему, которая возникает всякий раз, когда я пытаюсь сохранить картинку для альбома.

string filepath = Application.StartupPath + @"\temp.jpg";
if(File.Exists(filepath))
    File.Delete(filepath);

FileStream fs = File.Create(filepath);
id3AlbumImage.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
fs.Close();

using (FileStream stream = File.Open(filepath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
    byte[] buffer = new Byte[stream.Length];
    stream.Read(buffer, 0, buffer.Length);
    if (buffer != null)
    {
        MemoryStream memoryStream = new MemoryStream(buffer, false);
        _mp3File.TagHandler.Picture = Image.FromStream(memoryStream);
    }
}

Ошибка говорит: System.IO.IOException: заменяемый файл не может быть перезаписан перемещаемым файлом. Файл, подлежащий замене, сохранил свое первоначальное имя.

   bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   bei System.IO.__Error.WinIOError()
   bei System.IO.File.Replace(String sourceFileName, String destinationFileName, String destinationBackupFileName, Boolean ignoreMetadataErrors)
   bei Com.Hertkorn.Helper.Filesystem.FileMover.FileMove(FileInfo sourceLocation, FileInfo targetLocation, FileInfo backupLocation) in E:\Projects\id3lib\Mp3Lib\Utils\FileMover.cs:Zeile 51.
   bei Mp3Lib.Mp3File.RewriteFile(FileInfo bakFileInfo) in E:\Projects\id3lib\Mp3Lib\MP3\Mp3File.cs:Zeile 346.
   bei Mp3Lib.Mp3File.Update() in E:\Projects\id3lib\Mp3Lib\MP3\Mp3File.cs:Zeile 231.

1 Ответ

0 голосов
/ 15 февраля 2012

Фактическая проблема - NTFS. Если вы переписываете теги ID3, вы открываете сам MP3. Кажется, что этот процесс открытия иногда выдает ошибку. Как сказано, это просто случается «иногда». Прямо сейчас, я действительно сделал грязное решение и попытался поймать его, в случае этой ошибки я просто повторил то же самое. Самое смешное, что это работает до сих пор. Я отмечу этот ответ как решение, даже если оно грязное. Если кто-нибудь знает лучший способ или решение для него, сообщите нам!

...