读书人

输出字符缓冲区太小没法包含解码后的

发布时间: 2012-12-27 10:17:10 作者: rapoo

输出字符缓冲区太小,无法包含解码后的字符

C# code
namespace FileStreamDemo{    class Program    {        static void Main(string[] args)        {            byte[] m_byteData = new byte[100];            char[] m_charData = new char[100];            byte[] bytedata = new byte[100];            try            {                //创建F:\example.txt的FileStream对象                FileStream filestream = new FileStream(@"F:\example.txt", FileMode.OpenOrCreate);                //将要写入的字符串转换成字符数组                m_charData = "My first file operation".ToCharArray();                //通过UTF-8编码方法将字符数组转换成字节数组                Encoder encode = Encoding.UTF8.GetEncoder();                encode.GetBytes(m_charData, 0, m_charData.Length, m_byteData, 0, true);                //将流的当前位置设为文件开始位置                filestream.Seek(0, SeekOrigin.Begin);                //将字节数组中的内容写入文件                filestream.Write(m_byteData, 0, m_byteData.Length);                filestream.Flush();  //这句很重要,刷新,才能将内存中的数据真正的写入文件中                filestream.Close();                Console.WriteLine("write to file Succeed!");                FileStream readstream = new FileStream(@"F:\example.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);                readstream.Seek(0, SeekOrigin.Begin);                readstream.Read(bytedata, 0, 100);                Decoder m_Dec = Encoding.UTF8.GetDecoder();                m_Dec.GetChars(bytedata, 0, bytedata.Length, m_charData, 0);                Console.WriteLine("Read From File Succeed!");                Console.WriteLine(m_charData);            }            catch (IOException ex)            {                Console.WriteLine("There is an IOException");                Console.WriteLine(ex.Message);            }                              Console.ReadLine();        }    }}



m_Dec.GetChars(bytedata, 0, bytedata.Length, m_charData, 0);
这句抛异常,“输出字符缓冲区太小,无法包含解码后的字符,编码“Unicode (UTF-8)”的操作回退“System.Text.DecoderReplacementFallback”。”
各位高手,这个是什么原因啊。

读书人网 >C#

热点推荐