如何在文件中获取当前光标位置?

时间:2016-01-19 14:09:59

标签: rust

鉴于此代码:

let any_offset: u64 = 42;
let mut file = File::open("/home/user/file").unwrap();
file.seek(SeekFrom::Start(any_offset));
// println!("{:?}", file.cursor_position()) 

如何获取当前光标位置?

2 个答案:

答案 0 :(得分:6)

你应该能够以相对偏移量0调用Seek。然后它没有副作用,只返回你要查找的信息。

使用Cursormentioned 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());