日期:2014-05-18  浏览次数:20985 次

FileStream读取与写入乱码如何解决
用FileStream处理任何文件时(格式比如:txt、xml、doc、hex等。。),我以二进制流的方式读取出来,也就是FileStream的Read方法,读取到的数据放在一个字节数组中,然后再New一个FileStream用Write方法写到另外一个文件中去,可是写完后打开是乱码,请问怎么解决?渣渣代码如下(有点偷工减料,见谅):
C# code

        private void Read_Click(object sender, EventArgs e)
        {
            try
            {
                FileStream fileRead = new FileStream("D:\\Read.doc", FileMode.Open);
                FileStream fileWrite = new FileStream("D:\\Write.doc", FileMode.Append, FileAccess.Write);
                if (fileRead.Read(bytRead, 0, 8) <= 0)
                {
                    MessageBox.Show("文件已经读完");
                }
                fileWrite.Write(bytRead, 0, 8);

                fileRead.Close();
                fileWrite.Close();
            }
            catch (Exception exc)
            {
                MessageBox.Show("异常信息:"+exc.Message);
                
            }
        }



  最后,我搜了网上资料都说用用StreamReader 、StreamWriter 读写。。设置编码格式,可是这两个流不是只能操作text文件吗?如果给我这个建议的请给解释。

------解决方案--------------------
StreamReader 、StreamWriter是文本流读写 2进制流是BinaryWriter、BinaryReader
------解决方案--------------------
http://www.csharpwin.com/csharpspace/2209.shtml
------解决方案--------------------
你这只是读了首8个字节,等于把内容截断了,出现乱码很正常,你可以用
int offset = 0;
while((offset=fileRead.Read(bytRead, 0, 8))>0)
{
fileWrite.Write(bytRead, 0, offset=);
}