#fat #no-std

no-std ape-fatfs

versitile FAT library for embedded systems

2 unstable releases

0.2.0 May 17, 2023
0.1.0 Apr 22, 2023

#514 in Embedded development


Used in ape-mbr

MIT license

240KB
5.5K SLoC

ApeFATFS

MIT License Crates.io Documentation APE

versitile FAT library for embedded systems

Usage

This crate is can be used by adding fatfs to the dependencies in your project's Cargo.toml.

[dependencies]
ape-fatfs = "0.2.0"
# Comment out the above and uncomment the below to enable no_std support
# ape-fatfs = { default_features = false, version = 0.2.0 }

Examples

use std::io::prelude::*;
use ape_fatfs::{
    fs::{
        FsOptions,
        FileSystem,
    }
};

fn main() {
    # std::fs::copy("resources/fat16.img", "fat.img").unwrap();
    // Initialize a filesystem object
    let img_file = std::fs::OpenOptions::new().read(true).write(true)
        .open("fat.img").unwrap();
    let buf_stream = fscommon::BufStream::new(img_file);
    let fs = FileSystem::new(buf_stream, FsOptions::new()).unwrap();
    let root_dir = fs.root_dir();

    // Write a file
    root_dir.create_dir("foo").unwrap();
    let mut file = root_dir.create_file("foo/hello.txt").unwrap();
    file.truncate().unwrap();
    file.write_all(b"Hello World!").unwrap();

    // Read a directory
    let dir = root_dir.open_dir("foo").unwrap();
    for r in dir.iter() {
        let entry = r.unwrap();
        println!("{}", entry.file_name());
    }
    # std::fs::remove_file("fat.img").unwrap();
}

Dependencies

~1.6–8MB
~49K SLoC