关于流的问题

HawaiiLeo 2003-11-30 04:19:20
FileStream syncF = new FileStream("SyncDemo.txt", FileMode.OpenOrCreate);
syncF.WriteByte(Convert.ToByte('A'));

WriteByte是向流中写入一个字节,为什么SyncDemo.txt中显示的是字符'A',
而不是其ASCII,字节、字符有什么区别啊???

另:TextReader,StreamReader,StringReader有什么区别啊????
...全文
69 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
HawaiiLeo 2003-12-01
  • 打赏
  • 举报
回复
经过大家的帮助,我认为是这样的:
'A' 系统默认是字符,在内存中存放是00000000 01000001,把他转化成字节后,
存放为01000001,然后把他以字节的形式写入到文本文件中,当使用Notepad打开
文件时,他把这个字节流读出来,显示经过编码之后从字节流得到的字符串。
soulroom 2003-12-01
  • 打赏
  • 举报
回复
try System.IO.BinaryWriter
xixigongzhu 2003-12-01
  • 打赏
  • 举报
回复
任何编辑器和显示器在显示文件的时候,一般不是显示原始字节,而是显示经过编码之后从字节流得到的字符串。而且一般用的编码是系统默认的编码。
tangyanjun1 2003-12-01
  • 打赏
  • 举报
回复
TextReader表示可读取连续字符系列的阅读器

StreamReader是TextReader的子类,使其以一种特定的编码从字节流中读取字符。StreamReader 的默认编码为 UTF-8。而不是当前系统的 ANSI 。

StringReader也是TextReader的子类。实现从字符串进行读取的 TextReader。
HawaiiLeo 2003-12-01
  • 打赏
  • 举报
回复
0B13:0100 41 20 69 73 20 61 20 66-69 72 73 74 20 63 68 61 A is a first cha
0B13:0110 72 61 63 74 65 72 2E 89-3E D5 96 BB 34 00 02 0B racter..>...4...
0B13:0120 C7 96 00 74 03 BB 00 98-BE 77 97 8B 3E B9 98 B9 ...t.....w..>...
0B13:0130 08 00 E8 12 00 80 3C 20-74 09 B0 2E AA B9 03 00 ......< t.......
0B13:0140 E8 04 00 32 C0 AA C3 B4-00 8A F1 80 FC 01 74 09 ...2..........t.
0B13:0150 B4 00 8A 07 E8 DC E2 74-02 FE C4 AC 3C 3F 75 27 .......t....<?u'
0B13:0160 80 FC 00 74 20 80 FC 01-75 22 3A CE 75 05 80 3C ...t ...u":.u..<
0B13:0170 20 74 0A 80 3C 3F 75 14-83 F9 01 76 0F 8A 07 AA t..<?u....v....

没输入一次D结果都不一样啊。
现在谁来给我解决一下第二个问题啊???
tangyanjun1 2003-12-01
  • 打赏
  • 举报
回复
我教你一招,你可以在运行里cmd->debug SyncDemo.txt.然后敲D,就可以看到SyncDemo.txt的二进制编码了。
其实任何问建立都是二进制流只是Notepad这种软件能按不同格式来读取它吧了。
附带:Notepad可以读ascii,unicode,UTF-8等各种格式,在ascii不需要任何文件头。
unicode用FF FE作文件头,表示后面的是以unicode编码。UTF-8是以EF BB BF为文件头,表示后面的编码都是UTF-8编码的。
八爪鱼-杭州 2003-11-30
  • 打赏
  • 举报
回复
首先你要了解编码的相关的知道,每个字符在计算机中都是用二进制表示的,至于什么样的二进制组合表示什么字符就是编码的工作了,ascii就是其中一种编码,这里假设你的'A'是使用ascii表示,因此他在计算机中就是1000001(即十进制中的65),当你把转换成字节并写入流中再写到文件中,他都将是1000001(除非你在程序中想将他用别的编码表示如utf-8),所以在文件中实际上01000001,当你用别的程序打开他的时候,程序将这个二进制流读出,然后要在显示器上显示出来,在这里假设用写字板打开,首先写字板会把这个二进制流读出来,然后他要决定怎么样显示,因为写字板的功能就是显示字符(包括汉字),所以他会在ascii码表中找到相就的字符,并显示
HawaiiLeo 2003-11-30
  • 打赏
  • 举报
回复
up,各位帮帮忙吧。
8LY8Apollo 2003-11-30
  • 打赏
  • 举报
回复
up
gordenfl 2003-11-30
  • 打赏
  • 举报
回复
TextReader,StreamReader,StringReader
都派生自Stream类,他们有着一样的基础流,只是在流的外层做了不同的处理而已。
相关的细节请查询.net Framework 文档!!!
谢谢!
祝你好运!

110,477

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧