private void 保存sToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //结果点了取消,则什么也不做,返回。
            if (sfd.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }
            //定义一个筛选器,用来筛选保存文件的格式
            //sfd.Filter = " *.txt|*.txt|*.doc|*.doc|所有文件格式(*.*)|(*.*)";
            //sfd.FilterIndex1 = 1;
            //创建一个文件流,指向的是一个要保存的文件名
            FileStream fssave = File.Create(sfd.FileName);
            //定义一个编码方式
            Encoding ed = Encoding.Default;
            //文件流是对字节的操作,所以要把保存的内容转换成字节,转换的时候要用到编码的方式。
            byte[] b = ed.GetBytes(richTextBox1.Text);
            //通过流指向的文件的路径来保存
            fssave.Write(b,0,b.Length);
            fssave.Flush();
            fssave.Close();
        }问题1:以上代码中的筛选器为什么不能起作用呢?
问题2:保存的时候,写入的字节[fssave.Write(b,0,b.Length)],可为什么我打开txt的时候看到的是中文字符串呢?

解决方案 »

  1.   

    问题1:以上代码中的筛选器为什么不能起作用呢? //sfd.Filter = " *.txt|*.txt|*.doc|*.doc|所有文件格式(*.*)|(*.*)"; 
                //sfd.FilterIndex1 = 1; 要放在sfd.ShowDialog()  前面
    问题2:保存的时候,写入的字节[fssave.Write(b,0,b.Length)],可为什么我打开txt的时候看到的是中文字符串呢?你写进去的是被 Encoding.Default转换手的byte 系统根据你的BYTE显示成字符
    没看出来什么不正确的.
      

  2.   

    Encoding.Default; 改成其它的字符集,ASCII就会看到乱码了,读出来的时候别忘了用这种方式转,不然看到的也是乱码!