rust-fatfs fork with rs-core_io as dependency instead. No support for chrono.
Go to file
Rafał Harabień f2863e8f46 fix: Rework FAT size calculation for volume formatting
New formula gives nearly perfect results (according to tests) and is
better than formula from specification.
Also all math transformations are provided in comments so it is no longer
a blindly copied formula from spec but a Math supported formula.
Old formula was not taking into account sector size (it resulted in too
big FATs for sector size different than 512) and had rounding issues for
FAT12 and FAT32.
2018-12-12 21:28:05 +01:00
examples Add more sanity checks and fix size formatting in ls example (#11) 2018-09-24 20:58:02 +02:00
resources Add LFN support and rename some functions. 2017-09-24 22:12:38 +02:00
scripts Make create-test-img.sh more portable. 2017-10-21 17:38:20 +02:00
src fix: Rework FAT size calculation for volume formatting 2018-12-12 21:28:05 +01:00
tests refactor: apply most of rustfmt changes 2018-12-09 00:32:52 +01:00
.editorconfig Add .editorconfig file and fix whitespaces in existing files. (#4) 2017-10-25 17:20:27 +02:00
.gitignore Add Cargo.lock to .gitignore 2018-05-10 16:34:21 +02:00
.travis.yml Enable warnings and backtrace in Travis CI build (#20) 2018-10-06 17:37:48 +02:00
build-nostd.sh Fix std build 2018-05-10 15:14:09 +02:00
Cargo.toml Change version to 0.3.1 2018-10-20 13:55:25 +02:00
CHANGELOG.md Add changelog 2018-10-20 13:52:30 +02:00
LICENSE.txt Rename repository to rust-fatfs. 2017-11-08 23:00:30 +01:00
README.md Add docs for formatting API 2018-12-08 16:59:10 +01:00
rustfmt.toml Improve code style using rustfmt 2018-06-28 18:13:07 +02:00
TODO.md Add docs for formatting API 2018-12-08 16:59:10 +01:00

Rust FAT FS

Travis Build Status MIT licensed crates.io Documentation Minimum rustc version

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)
  • format volume
  • 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.