Откуда появляются символы после сохранения файла?

Есть массив байт, вывожу его на кран, сохраняю в файл через:
static void saveFile(string fileName, byte[] data)
        {
            FileStream fileStream = new FileStream(fileName, FileMode.OpenOrCreate);
            fileStream.Write(data, 0, data.Length);
            fileStream.Close();
        }

Сразу же открываю этот файл и считываю в массив байт:
static byte[] readFile(string fileName)
        {
            FileStream fileStream = File.OpenRead(fileName);
            byte[] fileDataBytes = new byte[fileStream.Length];

            fileStream.Read(fileDataBytes, 0, fileDataBytes.Length);
            fileStream.Close();

            return fileDataBytes;
        }

И о чудо, получаются разные массивы байт, то есть после открытия получившийся массив длиннее и содержит еще дополнительные символы.

Я не знаю что это прибавляется символ конца файла или что, но суть в том, что я сохраняю закодированный файл и что бы потом его раскодировать не должно быть никакого мусора, через что сохранять/читать что бы ничего не приписывалось?
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 2
petermzg
@petermzg
Самый лучший программист
Делая так:
FileStream fileStream = new FileStream(fileName, FileMode.OpenOrCreate);
fileStream.Write(data, 0, data.Length);
fileStream.Close();

Если у вас уже есть файл размером в 10 байт, то записав 5, вы получите размер файла в 10 байт, так как файл не пересоздается и FileStream просто переписывает значения с позиции 0.
Вот и появляются лишнии байты.
Ответ написан
Комментировать
Вы пишите с 0 байта и ни какого профита вам FileStream не даёт, просто используйте System.IO.File, там проблем быть не должно, почти всё заданно по умолчанию.
Можете выложить выходные данные? Конкретно: входной массив байт, то что он сохранил, и то что прочитал?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы