我手filestream new 了一个,然后再用 streamWriter写入一个数字,比如是5.然后保存成文件后,我发现文件前面多了一个0x30,0x35后面还有很长的空白,我也用了writer.BaseStream.Seek(0, SeekOrigin.Begin);这是怎么回事呀?
我用BinaryWriter 写,加了seek就行,但是我明明写的(short)5,写入文件后,成了0x05 0x00 本来应该是0x00 0x05的呀,这样读出来会有问题的,我也不大明白,请大家赐教............

解决方案 »

  1.   

    在内存里,数字字段等是用十六进制存储的,单独一个5应该就是一个字节,即是0x300x35。0x表示是十六进制,30就是0,35即是5。至于为什么你显示的是0x050x00,是因为有高低位之分。即存储的是0x050x00,而输出时就要把调换为0x000x05。
      

  2.   

    0x05 0x00 本来应该是0x00 0x05不应假定short的字节序列,在不同OS上是不同的,BinaryWriter 和 BinaryReader 内部可能也会有些处理。StreamWriter 是写文本的。文件头部可能有几个字节指示文件的编码。
      

  3.   

    你可以这样子,先创建实例化文件流
    然后在创建StreamWriter,然后在构造里面(文件流对象,encoding.default);
    接下来应该都会把
      

  4.   

    我用了Ann725的方法,可是还是不行呀,十六进制打开是这样的
    30 35                                                     05
    我看了msdn上的,说BinaryWriter位置可能有变化 ,但是streamWriter前面多的这些东西是怎么来的呢?那写文件 用什么流呢?
      

  5.   


    BinaryReader和BinaryWriter类是以二进制的格式处理基本数据,比如说bool,string,int等
    还有你数据读写是用什么控件的,你不妨把代码贴出来看下
      

  6.   

    像你要处理文本字符串的话,读取跟写入,就用streamreader,streamwriter
      

  7.   

    感谢大家的回答,我已经在网上找到解决方法了,具体就是,需要把一个short值存成一个byte[] 这样用BinaryWriter再去写入就没有问题了,写成文件后,我想用java去读,这样就可以了,在这里还是要谢谢大家