c# - 在字符串中使用二进制数据时数据是否"丢失"?

Vin*_*cio 2 c# string

我尝试使用返回字符串的StreamReader类' ReadToEnd()方法读取JPG文件.

出于某种原因,当我将此字符串写入文件时,它不会打开.

将数据读入字符串时会丢失什么?

Jon*_*eet 26

字符串用于文本数据.它们不是二进制数据 - 如果你以这种方式使用它们就会丢失数据(如果幸运的话,你可以使用哪些编码不会丢失数据,但有一些微妙的问题仍然会让它成为一个非常糟糕的主意.)

如果您实际处理的是文件,那么阅读整个文件的最简单方法是调用File.ReadAllBytes.如果必须处理任意流,请查看"从流中创建字节数组".


Mar*_*ell 5

字符串是为保存 unicode 字符而设计的;不是二进制。对于二进制文件,请使用 abyte[]Stream。或者Image更专业的图像处理等。

尽管名称如此,但StreamReader实际上是一个专门的TextReader- 即它是TextReaderStream. 图片不是文字,所以这不是正确的选择。


Pet*_*one 5

正如所有真正的程序员都知道的那样,唯一有用的数据结构是Array.字符串,列表,结构,集合 - 这些都是数组的特殊情况,可以这样轻松地处理,而不会弄乱您的编程语言中的各种复杂情况.花哨的数据类型最糟糕的是你必须声明它们,而且我们都知道,Real Programming Languages根据(六个字符)变量名的第一个字母进行隐式类型化.

此外,确定的Real Programmer可以用任何语言编写Fortran程序.


无论是谁修改了这个,都要么没有幽默感,要么没有民间传说知识.以上内容摘自1983年由泰克的Ed Post撰写的一篇非常着名的致Datamation编辑的信.这封信的标题是Real Programmers Do not Use Pascal.


jus*_*sij 5

永远记住,文本数据 二进制数据,二进制数据 不是 文本数据.