public override void Process(object obj) { FileInfo file = obj as FileInfo; if (TagUtils.HasTag(file)) { FileInfo dstFile = new FileInfo(file.FullName + "b"); File.Copy(file.FullName, dstFile.FullName, true); try { TagUtils.WriteTag(TagUtils.ReadTag(file), dstFile); bool areFilesEqual = Id3FileUtils.AreFilesEqual( file.FullName, dstFile.FullName); if (!areFilesEqual) { int tagSize = TagUtils.TagSize(dstFile); long equalBytes = Id3FileUtils.CountEqualBytes( file.FullName, dstFile.FullName); Logger.WriteLine(Tokens.Info, file.FullName); Logger.WriteLine(Tokens.Info, " " + equalBytes + " bytes equal (" + tagSize + ")"); File.Delete(dstFile.FullName); } } catch (Exception ex) { Logger.WriteLine(Tokens.Exception, ex); } finally { File.Delete(dstFile.FullName); } } }
private static void TestTagUtilsRewrite() { byte[] data = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; string fileName = VirtualDrive.VirtualFileName("TestID3TagUtilsRewrite\\t0.mp3"); Id3FileUtils.SaveFileBinary(fileName, data); TagUtils.Rewrite(new FileInfo(fileName), 4, 3, 2, 1); Stream s = VirtualDrive.OpenInStream(fileName); UnitTest.Test(s.ReadByte() == 0); UnitTest.Test(s.ReadByte() == 0); UnitTest.Test(s.ReadByte() == 4); UnitTest.Test(s.ReadByte() == 5); UnitTest.Test(s.ReadByte() == 6); UnitTest.Test(s.ReadByte() == 7); UnitTest.Test(s.ReadByte() == 8); UnitTest.Test(s.ReadByte() == 0); UnitTest.Test(s.ReadByte() == -1); s.Close(); }