fork download
  1. using System;
  2. using System.IO;
  3.  
  4. class RandomAccessFileExampleDouble {
  5. static void Main() {
  6. string filePath = "randomAccess.dat";
  7.  
  8. // Запись чисел с плавающей точкой в файл
  9. using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate)) {
  10. using (BinaryWriter writer = new BinaryWriter(fs)) {
  11. writer.Seek(0, SeekOrigin.Begin); // Начинаем с самого начала файла
  12. writer.Write((double)10.5); // Записываем число 10.5
  13.  
  14. writer.Seek(8, SeekOrigin.Begin); // Перемещаемся на 8 байт вперед
  15. writer.Write((double)20.75); // Записываем число 20.75
  16.  
  17. writer.Seek(16, SeekOrigin.Begin); // Перемещаемся ещё на 8 байт вперед
  18. writer.Write((double)30.25); // Записываем число 30.25
  19. }
  20. }
  21. Console.WriteLine("Данные записаны в файл.");
  22.  
  23. // Чтение чисел с плавающей точкой из файла
  24. using (FileStream fs = new FileStream(filePath, FileMode.Open)) {
  25. using (BinaryReader reader = new BinaryReader(fs)) {
  26. reader.BaseStream.Seek(0, SeekOrigin.Begin); // Возвращаемся в начало файла
  27. double num1 = reader.ReadDouble(); // Читаем первое число (10.5)
  28.  
  29. reader.BaseStream.Seek(8, SeekOrigin.Begin); // Переходим на следующую позицию
  30. double num2 = reader.ReadDouble(); // Читаем второе число (20.75)
  31.  
  32. reader.BaseStream.Seek(16, SeekOrigin.Begin); // Последняя позиция
  33. double num3 = reader.ReadDouble(); // Читаем третье число (30.25)
  34.  
  35. Console.WriteLine($"Число на позиции 0: {num1}");
  36. Console.WriteLine($"Число на позиции 8: {num2}");
  37. Console.WriteLine($"Число на позиции 16: {num3}");
  38. }
  39. }
  40. }
  41. }
Success #stdin #stdout 0.07s 32884KB
stdin
Standard input is empty
stdout
Данные записаны в файл.
Число на позиции 0: 10.5
Число на позиции 8: 20.75
Число на позиции 16: 30.25