首页 > 解决方案 > c# 如何撤消 Encoding.UTF8.GetBytes 或转换为 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 库。

如何解决混乱?

标签: c#binarystreamreader

解决方案


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

您的数据很可能已损坏,无法修复。Encoding.UTF8.GetString你可以用and做相反的事情StreamWriter,但你的编码很可能已经造成了无法弥补的损害。


推荐阅读