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

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

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

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

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

textual
Листинг программы
  1.         static void FRead()
  2.         {
  3.             using (FileStream FS = new FileStream("file.bin", FileMode.Open))
  4.             using (BinaryReader BR = new BinaryReader(FS))
  5.             {
  6.                 Console.Write("Файл:");
  7.                 while (BR.PeekChar() >= 0)
  8.                 {
  9.                     int n = BR.ReadInt32();
  10.                     Console.Write(n + " ");
  11.                 }
  12.                 Console.WriteLine();
  13.             }
  14.         }
  15.         static void Main(string[] args)
  16.         {
  17.             Random rdm = new Random();
  18.             using (FileStream FS = new FileStream("file.bin", FileMode.Create))
  19.                 using (BinaryWriter BW = new BinaryWriter(FS))
  20.                     for (int i = 0; i < 10; i++)
  21.                     {
  22.                         int n = rdm.Next(100);
  23.                         BW.Write(n);
  24.                     }
  25.             FRead();
  26.             //
  27.             using (FileStream FS = new FileStream("file.bin", FileMode.Open))
  28.             using (BinaryWriter BW = new BinaryWriter(FS))
  29.             using (BinaryReader BR = new BinaryReader(FS))
  30.             {
  31.                 int d = 3;
  32.                 Console.WriteLine("Удалить {0} int", d);
  33.                 int sz = sizeof(int);
  34.                 long l = FS.Length;
  35.                 long nw = l / sz - d;
  36.                 for (int i = 0; i < nw; i++)
  37.                 {
  38.                     FS.Seek((d + i) * sz, SeekOrigin.Begin);
  39.                     int n = BR.ReadInt32();
  40.                     FS.Seek(i * sz, SeekOrigin.Begin);
  41.                     BW.Write(n);
  42.                 }
  43.                 FS.SetLength(l - d * sz);
  44.             }
  45.             FRead();
  46.             //
  47.             using (FileStream FS = new FileStream("file.bin", FileMode.Open))
  48.             using (BinaryWriter BW = new BinaryWriter(FS))
  49.             using (BinaryReader BR = new BinaryReader(FS))
  50.             {
  51.                 int d = 4;
  52.                 Console.WriteLine("Вставить {0} int", d);
  53.                 int sz = sizeof(int);
  54.                 long l = FS.Length;
  55.                 FS.SetLength(l + d * sz);
  56.                 long nw = l / sz;
  57.                 for (int i = 0; i < nw; i++)
  58.                 {
  59.                     FS.Seek(-(d + i + 1) * sz, SeekOrigin.End);
  60.                     int n = BR.ReadInt32();
  61.                     FS.Seek(-(i + 1) * sz, SeekOrigin.End);
  62.                     BW.Write(n);
  63.                 }
  64.                 FS.Seek(0, SeekOrigin.Begin);
  65.                 for (int i = 0; i < d; i++)
  66.                 {
  67.                     int n = rdm.Next(100);
  68.                     BW.Write(n);
  69.                 }
  70.             }
  71.             FRead();

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


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

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

7   голосов , оценка 3.571 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы