using System;
using System.IO;
class RandomAccessFileExampleDouble {
static void Main() {
string filePath = "randomAccess.dat";
// Запись чисел с плавающей точкой в файл
using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate)) {
using (BinaryWriter writer = new BinaryWriter(fs)) {
writer.Seek(0, SeekOrigin.Begin); // Начинаем с самого начала файла
writer.Write((double)10.5); // Записываем число 10.5
writer.Seek(8, SeekOrigin.Begin); // Перемещаемся на 8 байт вперед
writer.Write((double)20.75); // Записываем число 20.75
writer.Seek(16, SeekOrigin.Begin); // Перемещаемся ещё на 8 байт вперед
writer.Write((double)30.25); // Записываем число 30.25
}
}
Console.WriteLine("Данные записаны в файл.");
// Чтение чисел с плавающей точкой из файла
using (FileStream fs = new FileStream(filePath, FileMode.Open)) {
using (BinaryReader reader = new BinaryReader(fs)) {
reader.BaseStream.Seek(0, SeekOrigin.Begin); // Возвращаемся в начало файла
double num1 = reader.ReadDouble(); // Читаем первое число (10.5)
reader.BaseStream.Seek(8, SeekOrigin.Begin); // Переходим на следующую позицию
double num2 = reader.ReadDouble(); // Читаем второе число (20.75)
reader.BaseStream.Seek(16, SeekOrigin.Begin); // Последняя позиция
double num3 = reader.ReadDouble(); // Читаем третье число (30.25)
Console.WriteLine($"Число на позиции 0: {num1}");
Console.WriteLine($"Число на позиции 8: {num2}");
Console.WriteLine($"Число на позиции 16: {num3}");
}
}
}
}