Запись в файл произвольного доступа: Буфер выходных байт не достаточен для хранения закодированных данных - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, ув.форумчане, очень требуется помощ! пытаюсь по примеру с книги сделать программу, пишущую данные в файл, но выдает ошибку. Пожалуйста, помогите. вот код:
static void Main(string[] args)
        {
            //создать два экземпляра класса byte[] и char[]
            byte[] byData;
            char[] byChar;
 
            try
            {
                //создать файл Temp.txt объектом FileStream в текущей директории проекта
                //заполнить массив символов byChar данными из входного строкового параметра
                //присвоить байтовому массиву размерность равную количеству символов в массиве byChar
                //записать из массива byChar в массив byData данные (переведенные из символьного вида в байтовый)
                FileStream aFile = new FileStream("Temp.txt", FileMode.Create);
                byChar = "Мой дядя - самых честных правил!".ToCharArray();
                byData = new byte[byChar.Length];
                Encoder e = Encoding.UTF8.GetEncoder();
                e.GetBytes(byChar, 0, byChar.Length, byData, 0, true);
 
                //переместить фаайловый указатель в начало файла
                aFile.Seek(0, SeekOrigin.Begin);
            }
            catch(IOException ex)
            {
                Console.WriteLine("Ошибка!", ex.ToString());
                Console.ReadKey();
                return;
            }
            Console.ReadKey();
        }
а вот ошибка: An unhandled exception of type 'System.ArgumentException' occurred in mscorlib.dll Additional information: Буфер выходных байт не достаточен для хранения закодированных данных, кодирование 'Unicode (UTF-8)' резерв 'System.Text.EncoderReplacementFallback'. p.s я только начал изучать работу с файлами, поэтому пока что совсем не понимаю, в чем дело (

Решение задачи: «Запись в файл произвольного доступа: Буфер выходных байт не достаточен для хранения закодированных данных»

textual
Листинг программы
byData = new byte[2 * byChar.Length];

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5