forked from M-Labs/rust-fatfs
2304b13ec4
Dir methods do not change Dir object itself. They usually clone inner stream so no change really happens self struct. Underlying partition is modified but it does not have to affect API. For example see std::fs::File::set_len. This change greatly simplifies rename API usage.
1.9 KiB
1.9 KiB
Rust FAT FS
FAT filesystem library implemented in Rust.
Features:
- read/write/create/remove file,
- enumerate directory children,
- create/remove directory,
- read/write file timestamps (updated automatically if
chrono
feature is enabled), - FAT12, FAT16, FAT32 compatibility,
- LFN (Long File Names) extension supported,
- Basic no_std environment support.
Usage
Put this in your Cargo.toml
:
[dependencies]
fatfs = "0.2"
Put this in your crate root:
extern crate fatfs;
You can start using library now:
let img_file = File::open("fat.img")?;
let mut buf_stream = fatfs::BufStream::new(img_file);
let fs = fatfs::FileSystem::new(&mut buf_stream, fatfs::FsOptions::new())?;
let root_dir = fs.root_dir();
let mut file = root_dir.create_file("hello.txt")?;
file.write_all(b"Hello World!")?;
See more examples in examples
subdirectory.
no_std usage
Put this in your Cargo.toml
:
[dependencies]
fatfs = { version = "0.2", features = ["core_io"], default-features = false }
Note: LFN support requires alloc
and core_io/collections
features and makes use of alloc
crate.
You may have to provide a memory allocator implementation.
For building in no_std
mode nightly Rust version compatible with current core_io
crate is required.
See date string in core_io
dependency version.
License
The MIT license. See LICENSE.txt.