这几天对FileStream简直头疼,看下面的代码:class Program
    {
        static void Main(string[] args)
        {
            FileStreamWriteFile("我爱熊俊");
            Console.ReadKey();
        }
       public static  void FileStreamWriteFile(string str)
        {
             byte[] byData;
             char[] charData = str.ToCharArray();;
            try
             {
                 FileStream nFile = new FileStream(@"d:\love.txt", FileMode.Create);                 
                 charData = str.ToCharArray();  //获得字符数组                 
                 byData = new byte[charData.Length];  //初始化字节数组                 
                 Encoder enc = Encoding.UTF8.GetEncoder();   //将字符数组转换为正确的字节格式
                 enc.GetBytes(charData, 0, charData.Length,byData,0,true);
                 nFile.Seek(0, SeekOrigin.Begin);
                 nFile.Write(byData, 0, byData.Length);
             }
            catch (Exception ex)
             {
                 throw ex;
             }
         }               
    }上面的代码,用FileStream 向文件写入文本,为什么报错呢----输出字节缓冲区太小,无法包含编码后的数据,编码“Unicode (UTF-8)”的操作回退“System.Text.EncoderReplacementFallback”请问,哪里错了?

解决方案 »

  1.   

    本帖最后由 bdmh 于 2012-08-27 14:33:11 编辑
      

  2.   


    public static void FileStreamWriteFile(string text,string filePath)
      {
          using(FileStream stream = new FileStream(filePath, FileMode.Create))
          {
              using (StreamWriter writer = new StreamWriter(stream, Encoding.UTF8))
              {
                  writer.Write(text);
              }
                    
           }
    }
      

  3.   

    File.WriteAllText(@"d:\love.txt", "我爱熊俊", Encoding.GetEncoding("GB2312"));
      

  4.   

    StreamWriter的用法我是熟悉的,我主要是要学习FileStream的用法,要将图片插进数据库
      

  5.   

    http://www.cnblogs.com/tuyile006/archive/2007/01/08/614718.html
      

  6.   

    byte[] byData;声明的数组太小了,越界了
      

  7.   

     byData = new byte[charData.Length];
    这不是保证了两个数组长度一致的吗?为什么不不行?
    要怎么设置呢?
      

  8.   

    byData = new byte[charData.Length]; //初始化字节数组 
    改成
     byData = new UTF8Encoding().GetBytes(str);