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

Трейт Seek

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

Синтаксис

trait Seek { fn seek(&mut self, pos: SeekFrom) -> Result<u64>; }

Пример

Давайте откроем файл, запишем в него строку, а затем переместим курсор в начало с помощью SeekFrom::Start и прочитаем содержимое:

use std::fs::File; use std::io::{Read, Seek, SeekFrom, Write}; fn main() { let mut file = File::create("test.txt").unwrap(); file.write_all(b"abcde").unwrap(); file.seek(SeekFrom::Start(0)).unwrap(); let mut buffer = String::new(); file.read_to_string(&mut buffer).unwrap(); println!("{}", buffer); }

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

"abcde"

Пример

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

use std::fs::File; use std::io::{Read, Seek, SeekFrom, Write}; fn main() { let mut file = File::create("test.txt").unwrap(); file.write_all(b"abcde").unwrap(); file.seek(SeekFrom::Start(2)).unwrap(); let mut buffer = String::new(); file.read_to_string(&mut buffer).unwrap(); println!("{}", buffer); }

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

"cde"

Пример

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

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

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

"de"

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

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