Удалить первые n байт из файла - C#

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

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

Нужно из файла удалить первые n байт, а потом в начало файла записать некий массив байт partOfFile. При этом, partOfFile скорее всего не будет равен этому числу n. Как это можно сделать?
Перезаписать файл - не вариант. Он большой. Нужно провести операцию именно в том файле, который указан.

Решение задачи: «Удалить первые n байт из файла»

textual
Листинг программы
        static void FRead()
        {
            using (FileStream FS = new FileStream("file.bin", FileMode.Open))
            using (BinaryReader BR = new BinaryReader(FS))
            {
                Console.Write("Файл:");
                while (BR.PeekChar() >= 0)
                {
                    int n = BR.ReadInt32();
                    Console.Write(n + " ");
                }
                Console.WriteLine();
            }
        }
        static void Main(string[] args)
        {
            Random rdm = new Random();
            using (FileStream FS = new FileStream("file.bin", FileMode.Create))
                using (BinaryWriter BW = new BinaryWriter(FS))
                    for (int i = 0; i < 10; i++)
                    {
                        int n = rdm.Next(100);
                        BW.Write(n);
                    }
            FRead();
            //
            using (FileStream FS = new FileStream("file.bin", FileMode.Open))
            using (BinaryWriter BW = new BinaryWriter(FS))
            using (BinaryReader BR = new BinaryReader(FS))
            {
                int d = 3;
                Console.WriteLine("Удалить {0} int", d);
                int sz = sizeof(int);
                long l = FS.Length;
                long nw = l / sz - d;
                for (int i = 0; i < nw; i++)
                {
                    FS.Seek((d + i) * sz, SeekOrigin.Begin);
                    int n = BR.ReadInt32();
                    FS.Seek(i * sz, SeekOrigin.Begin);
                    BW.Write(n);
                }
                FS.SetLength(l - d * sz);
            }
            FRead();
            //
            using (FileStream FS = new FileStream("file.bin", FileMode.Open))
            using (BinaryWriter BW = new BinaryWriter(FS))
            using (BinaryReader BR = new BinaryReader(FS))
            {
                int d = 4;
                Console.WriteLine("Вставить {0} int", d);
                int sz = sizeof(int);
                long l = FS.Length;
                FS.SetLength(l + d * sz);
                long nw = l / sz;
                for (int i = 0; i < nw; i++)
                {
                    FS.Seek(-(d + i + 1) * sz, SeekOrigin.End);
                    int n = BR.ReadInt32();
                    FS.Seek(-(i + 1) * sz, SeekOrigin.End);
                    BW.Write(n);
                }
                FS.Seek(0, SeekOrigin.Begin);
                for (int i = 0; i < d; i++)
                {
                    int n = rdm.Next(100);
                    BW.Write(n);
                }
            }
            FRead();

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


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

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

7   голосов , оценка 3.571 из 5
Похожие ответы