Вот мой тест для записи в файл:
[Test]
public void CanWriteManifestToFile()
{
byte[] data = new byte[] { 0x00, 0x01, 0x80, 0x1f };
MemoryStream ms = new MemoryStream(data);
var mg = new ManifestGeneratorV1();
mg.WriteManifestFile(ms, "TestManifest.mnf");
Assert.IsTrue(File.Exists("TestManifest.mnf"));
Assert.AreEqual(data, GetDataFromFile("TestManifest.mnf"));
}
Вот метод WriteManifestFile, который фактически выполняет запись:
public void WriteManifestFile(MemoryStream ms, string filePath)
{
using (StreamWriter sw = new StreamWriter(filePath, false))
{
ms.Seek(0, 0);
using (StreamReader sr = new StreamReader(ms))
{
sw.Write(sr.ReadToEnd());
}
}
}
Мой тест не пройден.В результате получается следующий байтовый массив {00,01,ef,bf,bd,1f}
.Теперь, если я изменю 80 на что-то, что не начинается с f
или 8
, все работает правильно.Что может привести к изменению 80
на efbfbd
?