РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
805 of 1245 menu

Метод seek

Метод seek из трейта Seek перемещает курсор ввода-вывода в потоке на позицию, заданную параметром SeekFrom. Метод возвращает результат типа Result<u64, Error> - при успехе это новая позиция курсора от начала потока, при ошибке - значение ошибки. Параметром метод принимает значение перечисления SeekFrom, которое может быть одним из трёх вариантов: SeekFrom::Start - смещение от начала потока, SeekFrom::End - смещение от конца потока (может быть отрицательным), SeekFrom::Current - смещение от текущей позиции курсора.

Синтаксис

seek.seek(pos)

Пример

Давайте откроем файл, переместим курсор на позицию 2 от начала и прочитаем оставшееся содержимое:

use std::fs::File; use std::io::{Read, Seek, SeekFrom}; fn main() { let mut file = File::open("test.txt").unwrap(); let pos = file.seek(SeekFrom::Start(2)).unwrap(); println!("{}", pos); let mut content = String::new(); file.read_to_string(&mut content).unwrap(); println!("{}", content); }

Результат выполнения кода:

2 "cde"

Пример

Давайте переместим курсор на 2 байта назад от конца файла и прочитаем оставшиеся байты:

use std::fs::File; use std::io::{Read, Seek, SeekFrom}; fn main() { let mut file = File::open("test.txt").unwrap(); let pos = file.seek(SeekFrom::End(-2)).unwrap(); println!("{}", pos); let mut content = String::new(); file.read_to_string(&mut content).unwrap(); println!("{}", content); }

Результат выполнения кода:

3 "de"

Пример

Давайте переместим курсор на 1 байт вперёд от текущей позиции и прочитаем оставшееся содержимое:

use std::fs::File; use std::io::{Read, Seek, SeekFrom}; fn main() { let mut file = File::open("test.txt").unwrap(); file.seek(SeekFrom::Start(1)).unwrap(); let pos = file.seek(SeekFrom::Current(1)).unwrap(); println!("{}", pos); let mut content = String::new(); file.read_to_string(&mut content).unwrap(); println!("{}", content); }

Результат выполнения кода:

2 "cde"

Смотрите также

  • трейт Seek,
    который предоставляет метод seek для перемещения курсора
  • перечисление SeekFrom,
    которое задаёт позицию для перемещения курсора
  • метод read_to_string,
    который читает всё содержимое потока в строку
  • метод flush,
    который сбрасывает буферизованные данные в поток
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить