forked from M-Labs/rust-fatfs
rust-fatfs fork with rs-core_io as dependency instead. No support for chrono.
e45cfb5188
Previous code is not working correctly if sector size is different than 512. Creating test for this issue would require another binary blob in repository so I am leaving it without test for now. |
||
---|---|---|
examples | ||
resources | ||
scripts | ||
src | ||
tests | ||
.editorconfig | ||
.gitignore | ||
.travis.yml | ||
build-nostd.sh | ||
Cargo.toml | ||
CHANGELOG.md | ||
LICENSE.txt | ||
README.md | ||
rustfmt.toml | ||
TODO.md |
Rust FAT FS
A FAT filesystem library implemented in Rust.
Features:
- read/write file using standard Read/Write traits,
- read directory contents,
- create/remove file or directory,
- rename/move file or directory,
- read/write file timestamps (updated automatically if
chrono
feature is enabled), - FAT12, FAT16, FAT32 compatibility,
- LFN (Long File Names) extension is supported,
- Basic no_std environment support.
Usage
Add this to your Cargo.toml
:
[dependencies]
fatfs = "0.3"
and this to your crate root:
extern crate fatfs;
You can start using the fatfs
library now:
let img_file = File::open("fat.img")?;
let fs = fatfs::FileSystem::new(img_file, fatfs::FsOptions::new())?;
let root_dir = fs.root_dir();
let mut file = root_dir.create_file("hello.txt")?;
file.write_all(b"Hello World!")?;
Note: it is recommended to wrap the underlying file struct in a buffering/caching object like BufStream
from fscommon
crate. For example:
extern crate fscommon;
let buf_stream = BufStream::new(img_file);
let fs = fatfs::FileSystem::new(img_file, fatfs::FsOptions::new())?;
See more examples in the examples
subdirectory.
no_std usage
Add this to your Cargo.toml
:
[dependencies]
fatfs = { version = "0.3", 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 a nightly Rust compiler version compatible with the current core_io
crate is required.
See a date string in the core_io
dependency version.
License
The MIT license. See LICENSE.txt.