6个版本
0.2.4 | 2023年2月12日 |
---|---|
0.2.3 | 2023年2月11日 |
0.1.1 | 2023年1月25日 |
#1347 in 文件系统
每月 30 次下载
98KB
2.5K SLoC
embedded-exfat
一个专注于
no_std
嵌入式系统并支持异步的exFAT库
alloc
是该crate的强制依赖,尽管内存分配已最小化,上表为256B,每个文件或目录为12B加上名称大小,根目录为12B。
对于异步场景,如果可用std库,则启用async-std
功能,否则启用async
功能
对于no_std
场景,请注意,线程安全由spin crate提供,这可能导致死锁。
使用此crate
use std::io::Write;
use exfat::error::Error;
use exfat::io::std::FileIO;
use exfat::ExFAT;
use exfat::FileOrDirectory;
let io = FileIO::open(device).map_err(|e| Error::IO(e)).unwrap();
let mut exfat = ExFAT::new(io).unwrap();
exfat.validate_checksum().unwrap();
let mut root = exfat.root_directory().unwrap();
root.validate_upcase_table_checksum().unwrap();
let mut file = match root.open().unwrap().open("test.txt").unwrap() {
FileOrDirectory::File(f) => f,
FileOrDirectory::Directory(_) => panic!("Not a file"),
};
let mut stdout = std::io::stdout();
let mut buf = [0u8; 512];
loop {
let size = file.read(&mut buf).unwrap();
stdout.write_all(&buf[..size]).unwrap();
if size < buf.len() {
break;
}
}
依赖项
~2–12MB
~142K SLoC