c# - 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 库。
如何解决混乱?
解决方案
你根本不应该用StreamReader
它来读取二进制文件,它是一个TextReader
. 即使您的第二段代码也是错误的,除非sourceStream
仅包含文件名。
您的数据很可能已损坏,无法修复。Encoding.UTF8.GetString
你可以用and做相反的事情StreamWriter
,但你的编码很可能已经造成了无法弥补的损害。
推荐阅读
- google-chrome - 使用 chrome 扩展读取和写入文件夹中的文件
- android - Android:底部导航顶部的浮动操作栏不起作用
- flutter - 安装 build_runner 时 Dart SDK 版本不匹配
- python - 将轮子上传到 github 版本时出现资产路径错误
- vue.js - 为什么这个 $emit 事件在 Vue.js 中的组件和父级之间不起作用?
- c# - 未在二叉搜索树 C# 中添加节点
- php - 使用 PHP 接收 Blob 并存储到 mySQL 数据库
- html - 菜单 ul 元素未显示在 h1 和图标下方
- python - 如果 ```.pyc``` 文件只包含导入模块的字节码,主文件 (.py) 中的其他代码如何执行?
- r - 在网络上部署闪亮的应用程序而不使用任何服务器(如闪亮的服务器,shinnyapps.io)