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