gpt4 book ai didi

c# - 为什么这不会将正确的字节写入文件?

转载 作者:行者123 更新时间:2023-11-30 20:08:15 25 4
gpt4 key购买 nike

这是我写入文件的测试:

    [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 更改为不以 f8 开头的内容,则一切正常。是什么导致 80 变为 efbfbd

最佳答案

您正在对非字符串数据使用字符串方法; ReadToEndWrite(string)。那是无效的;损坏是此的直接结果(即通过文本 Encoding 运行任意数据)。请改用原始 Stream API:

using(var file = File.Create(filePath))
{
ms.Position = 0;
ms.CopyTo(file);
}

或者只是:

File.WriteAllBytes(filePath, ms.ToArray());

关于c# - 为什么这不会将正确的字节写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7275659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com