Как отменить Encoding.UTF8.GetBytes или преобразовать в File.ReadAllBytes - PullRequest
0 голосов
/ 25 июня 2018

C # приложение было написано, чтобы передавать файлы на FTP-сервер. И функция ниже была использована для чтения файла JPEG. Это плохая функция, потому что она портит jpeg:

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

Код ниже будет работать для передачи файлов.

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

А теперь у меня есть библиотека поврежденных JPEG.

Как исправить беспорядок?

1 Ответ

0 голосов
/ 25 июня 2018

Вы вообще не должны использовать StreamReader для чтения двоичных файлов, это TextReader.Даже ваш второй фрагмент кода неправильный, если только sourceStream не содержит только имя файла.

Вероятно, ваши данные повреждены и не подлежат восстановлению.Вы можете сделать обратное с Encoding.UTF8.GetString и StreamWriter, но ваша кодировка, скорее всего, уже нанесла непоправимый ущерб.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...