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