В существующем типизированном файле, элементами которого являются числа, изменить на заданное число - C#
Формулировка задачи:
Всем привет! Помогите решить задачу, если не трудно конечно! Очень прошу, пожалуйста!
В существующем типизированном файле, элементами которого являются числа, изменить на заданное число:
а) первый элемент;
б) пятый элемент;
в) k-й элемент;
г) последний элемент.
Новое значение вводится с клавиатуры.
+ Не могу понять надо файл создать в или просто указать адрес. В инете нашла как просто удалить текст из файла, а как изменять текст нет.
Решение задачи: «В существующем типизированном файле, элементами которого являются числа, изменить на заданное число»
textual
Листинг программы
using System;
using System.IO;
namespace ConsoleApplication203
{
class Program
{
static void Main(string[] args)
{
var fileName = "c:\\temp.bin";
//создадим тестовый файл
using (var fs = new FileStream(fileName, FileMode.Create))
using (var sw = new BinaryWriter(fs))
for (int i = 0; i < 10; i++)//запишем в файл числа от 0 до 9
sw.Write(i);
//ввод нового значения
Console.Write("Enter new value: ");
var newVal = int.Parse(Console.ReadLine());
//размер элемента файла в байтах
var elemSize = sizeof (int);
//изменим первый элемент
ChangeElement(fileName, elemSize, 0, newVal);
//изменим пятый элемент
ChangeElement(fileName, elemSize, 4, newVal);
//изменим последний элемент
var fileSize = new FileInfo(fileName).Length;//размер файла в байтах
var elemCount = (int)fileSize/elemSize;//число элементов в файле
ChangeElement(fileName, elemSize, elemCount - 1, newVal);//записываем в последнюю позицию
}
static void ChangeElement(string fileName, int elementSize, int elementIndex, int newValue)
{
using(var fs = new FileStream(fileName, FileMode.Open))
using (var sw = new BinaryWriter(fs))
{
fs.Seek(elementSize*elementIndex, SeekOrigin.Begin);
sw.Write(newValue);
}
}
}
}