c# 如何撤消编码。UTF8.GetBytes 或转换为 File.ReadAllBytes

c# How to undo Encoding.UTF8.GetBytes or convert to File.ReadAllBytes

已编写 C# 应用程序,将文件传输到 FTP 服务器。下面的函数用于读取 jpeg 文件。这是一个糟糕的功能,因为它破坏了 jpeg:

StreamReader sourceStream = new StreamReader("image.jpeg");
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());

下面的代码适用于文件传输。:

 fileContents = File.ReadAllBytes(sourceStream.ReadToEnd());

现在我有了损坏的 jpeg 库。

如何解决这个问题?

您根本不应该使用 StreamReader 来读取二进制文件,它是 TextReader。即使你的第二段代码也是错误的,除非 sourceStream 只包含一个文件名。

您的数据很可能已损坏,无法修复。您可以使用 Encoding.UTF8.GetStringStreamWriter 执行相反的操作,但您的编码很可能已经造成无法弥补的损坏。