1 个不稳定版本
0.1.0 | 2024 年 1 月 16 日 |
---|
#879 in 文件系统
49KB
1K SLoC
ext4fs-rs
ext4fs-rs 是 Rust 实现的用于用户空间的 ext4 文件系统。ext4 文件系统可以直接读取,无需挂载,目前不支持写操作。欢迎您的贡献。
⚠️⚠️⚠️ 当前 API 不稳定,可能将来会修改,还需要添加更多测试和文档。
示例
- 新建文件系统
// Read a raw ext4 image file.
let file = std::fs::File::open("testdata/test.ext4").unwrap();
let reader = BufReader::new(file);
let mut fs = ext4fs::FileSystem::from_reader(reader).unwrap();
- 遍历目录
let rd = fs.read_dir("/dir1").unwrap();
for x in rd {
println!("{}", x.unwrap().get_name_str());
}
- 获取文件信息
let m = fs.metadata("/hello.txt").unwrap();
println!(
"uid={} gid={} permissions={:o} len={} created={:?} accessed={:?} modified={:?}",
m.uid(),
m.gid(),
m.permissions(),
m.len(),
m.created(),
m.accessed(),
m.modified(),
);
- 读取符号链接
let p = fs.read_link("/hello.txt.lnk").unwrap();
println!("{}", p.to_str().unwrap());
- 读取文件全部内容
let b = fs.read("/hello.txt").unwrap();
assert_eq!("hello\n", String::from_utf8_lossy(&b).to_string());
- 按需读取文件
let mut f = fs.open("/hello.txt").unwrap();
f.seek(std::io::SeekFrom::Start(2)).unwrap();
let mut buf = String::new();
f.read_to_string(&mut buf).unwrap();
依赖
~0.8–1.4MB
~32K SLoC