forked from M-Labs/rust-fatfs
rust-fatfs fork with rs-core_io as dependency instead. No support for chrono.
4528aedc6e
Encoder is not yet used but will be in future. This is implemented as static reference for now to avoid adding additional type parameters to all main types. It should be enough for most of cases where encoder/decoder does not have any state and can be implemented as static variable. |
||
---|---|---|
examples | ||
resources | ||
scripts | ||
src | ||
tests | ||
.editorconfig | ||
.gitignore | ||
.travis.yml | ||
build-nostd.sh | ||
Cargo.toml | ||
LICENSE.txt | ||
README.md | ||
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.