请问,FileStream.Read方法
FileStream.Read方法:MSDN从流中读取字节块并将该数据写入给定缓冲区中。
我想问的是,FileStream读取数据到缓冲区,是以什么编码方式读取的呢?不指定吗?而且没有其他重载方法。
------解决方案--------------------和编码无关。
之间回答过你了,你没有理解,所谓编码,就是对数据的解释。比如65这个原始的数字,在ASCII编码里面,理解为A这个字符。
FileStream读取的是原始的数据,不涉及对数据代表什么的解释。
------解决方案--------------------因为你要把字符串写到文件中啊。
“字符串”是一个抽象的概念,你就需要编码去约定它应该被以什么形式记录下来。
------解决方案--------------------编码不理解么?比如说“邮政编码”。
100859是一个北京市某区域的邮政编码,比如说代表北京市复兴路。
那么如果你要把“北京市复兴路”这个地址用一个数字记录下来,那么就需要邮政编码(当然你也可以用Unicode编码保存这个地址字面值)。
反之,当你从文件中读取到100859,你就需要解码,也就是解释这个数字是什么含意。它可能是一个叫张三的qq号,也可能是一个很大的数字,或者一个电话号码,但是在这里,我们当作邮政编码理解,对应的含义就是“北京市复兴路”。
FileStream的读取就相当于我们只取得这个数字,而不对它解释,所以和编码无关。当你要用它和地址转换的时候,你才需要邮政编码。
------解决方案--------------------再比如说,莫尔斯电报编码。
你在很多电视电影中都能看到这样的情节,一个发报员不断按动发报键,发出滴滴滴长短不一的声音。
假设你不懂莫尔斯编码,那么这不妨碍你听见这些声音,只是你无从知道这些声音对应的文本信息是什么,换言之电报里面说了什么。
如果你需要把电报内容发出去,或者接收到信号去解析这个信号是什么电报内容,你就需要编码/解码。
------解决方案--------------------
FileStream是文件流,可以简单理解为一组字节序列,是基于byte的。byte中既可以存放文本,也可以存放非文本。比如有的文件是文本文件,也有的是非文本文件(图片、rar文件等)。byte和字符之间存在多种转换方式,通常来说就是编码方式,比如gb2312、utf-8、ascii等。如果你操作的是基于文本的文件,需要指定一种编码方式;如果你操作的是非文本文件,则一般不需指定编码方式。
------解决方案--------------------
------解决方案--------------------我想问的是,FileStream读取数据到缓冲区,是以什么编码方式读取的呢?不指定吗?而且没有其他重载方法。
1,默认编码为System.Text.UTF8Encoding
2,重载方法很多 一般情况默认就行了如果乱码在指定编码格式
------解决方案--------------------FileStream 是不 行的
StreamReader 可以指定编码格式 详细的 你去看看 MSDN 就得了