C # Добавить массив байтов в существующий файл

Я хотел бы добавить массив байтов в уже существующий файл (C:\test.exe) . Предположим, что следующий массив байтов:

 byte[] appendMe = new byte[ 1000 ] ; File.AppendAllBytes(@"C:\test.exe", appendMe); // Something like this - Yes, I know this method does not really exist. 

Я бы сделал это с помощью File.WriteAllBytes, но я собираюсь использовать массив байтов ENORMOUS, и исключение System.MemoryOverload постоянно бросается. Поэтому мне, скорее всего, придется разбить массив на куски и добавить каждый массив байтов в конец файла.

Спасибо,

Evan

    Один из способов – создать FileStream с FileMode.Append создания FileMode.Append .

    Открывает файл, если он существует и ищет конец файла, или создает новый файл.

    Это будет выглядеть примерно так:

     public static void AppendAllBytes(string path, byte[] bytes) { //argument-checking here. using (var stream = new FileStream(path, FileMode.Append)) { stream.Write(bytes, 0, bytes.Length); } } 
    1. Создайте новый FileStream .
    2. Seek() до конца.
    3. Write() байты.
    4. Close() stream.

    Вы также можете использовать встроенный FileSystem.WriteAllBytes Method (String, Byte[], Boolean) .

     public static void WriteAllBytes( string file, byte[] data, bool append ) 

    Установите приложение « Истина» для добавления к содержимому файла; False, чтобы перезаписать содержимое файла. Значение по умолчанию – False.

    Я не совсем уверен, в чем вопрос, но у C # есть метод BinaryWriter который принимает массив байтов.

    BinaryWriter (байт [])

     bool writeFinished = false; string fileName = "C:\\test.exe"; FileStream fs = new FileString(fileName); BinaryWriter bw = new BinaryWriter(fs); int pos = fs.Length; while(!writeFinished) { byte[] data = GetData(); bw.Write(data, pos, data.Length); pos += data.Length; } в bool writeFinished = false; string fileName = "C:\\test.exe"; FileStream fs = new FileString(fileName); BinaryWriter bw = new BinaryWriter(fs); int pos = fs.Length; while(!writeFinished) { byte[] data = GetData(); bw.Write(data, pos, data.Length); pos += data.Length; } 

    Если writeFinished истинна, когда все данные добавлены, а GetData() возвращает массив данных, которые будут добавлены.

    вы можете просто создать функцию для этого

     public static void AppendToFile(string fileToWrite, byte[] DT) { using (FileStream FS = new FileStream(fileToWrite, File.Exists(fileToWrite) ? FileMode.Append : FileMode.OpenOrCreate, FileAccess.Write)) { FS.Write(DT, 0, DT.Length); FS.Close(); } } 
    Давайте будем гением компьютера.