Удалить первые 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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д