鉴于此代码:
let any_offset: u64 = 42;
let mut file = File::open("/home/user/file").unwrap();
file.seek(SeekFrom::Start(any_offset));
// println!("{:?}", file.cursor_position())
如何获取当前光标位置?
答案 0 :(得分:6)
你应该能够以相对偏移量0调用Seek
。然后它没有副作用,只返回你要查找的信息。
使用Cursor
类mentioned by Aaronepower可能会更有效率,因为您可以避免进行额外的系统调用。
答案 1 :(得分:2)
根据Seek
特质API,使用搜索功能返回新位置。但是,您也可以获取File
的数据,并将其放在Vec
中,然后将Vec
包装在Cursor
中,其中包含获取现在的位置。
let any_offset: u64 = 42;
let mut file = File::open("/home/user/file").unwrap();
let new_position = file.seek(SeekFrom::Start(any_offset)).unwrap();
println!("{:?}", new_position);
use std::io::Cursor;
let any_offset: u64 = 42;
let mut file = File::open("/home/user/file").unwrap();
let contents = Vec::new();
file.read_to_end(&mut contents);
let mut cursor = Cursor::new(contents);
cursor.seek(SeekFrom::Start(any_offset));
println!("{:?}", cursor.position());