9 releases
0.4.1 | Feb 22, 2025 |
---|---|
0.4.0 | Aug 6, 2022 |
0.3.1 | May 24, 2022 |
0.3.0 | Sep 13, 2021 |
0.1.2 | Feb 21, 2020 |
#64 in Filesystem
134,353 downloads per month
Used in 203 crates
(7 directly)
59KB
997 lines
fsio
File System and Path utility functions.
Overview
This crate contains utility functions for path, file and directory handling.
Usage
There are multiple main modules for fsio:
- fsio::path - Holds path related functions and traits. They do not directly modify the file system.
- fsio::file - File utility functions such as read_file, write_file, ...
- fsio::directory - Directory specific utility functions.
Examples
use fsio::{directory, file, path};
use std::fs::File;
use std::io::Write;
use std::path::Path;
use std::str;
fn main() {
// file operations
let mut result = file::ensure_exists("./target/__test/example/file_test/dir1/dir2/file.txt");
assert!(result.is_ok());
// create/append and read text files
let mut file_path = "./target/__test/example/file_test/append_text_file/file.txt";
result = file::write_text_file(file_path, "some content");
assert!(result.is_ok());
result = file::append_text_file(file_path, "\nmore content");
assert!(result.is_ok());
let mut text = file::read_text_file(file_path).unwrap();
assert_eq!(text, "some content\nmore content");
// create/append and read binary files
file_path = "./target/__test/example/file_test/append_and_read_file_test/file.txt";
result = file::write_file(file_path, "some content".as_bytes());
assert!(result.is_ok());
result = file::append_file(file_path, "\nmore content".as_bytes());
assert!(result.is_ok());
let data = file::read_file(file_path).unwrap();
assert_eq!(str::from_utf8(&data).unwrap(), "some content\nmore content");
// custom writing
file_path = "./target/__test/file_test/modify_file/file.txt";
result = file::modify_file(
file_path,
&move |file: &mut File| file.write_all("some content".as_bytes()),
false,
);
assert!(result.is_ok());
text = file::read_text_file(file_path).unwrap();
assert_eq!(text, "some content");
// delete file
result = file::delete(file_path);
assert!(result.is_ok());
// directory operations
result = directory::create("./target/__test/example/directory_test/dir1/dir2");
assert!(result.is_ok());
result = directory::create_parent("./target/__test/example/directory_test/dir1/files/file.txt");
assert!(result.is_ok());
// delete directory
result = directory::delete("./target/__test/example/directory_test");
assert!(result.is_ok());
// basename and parent directory examples
let basename = path::get_basename("./src/path/mod.rs");
assert_eq!(basename.unwrap(), "mod.rs");
let dirname = path::get_parent_directory("./src/path/mod.rs");
assert_eq!(dirname.unwrap(), "./src/path");
// canonicalize examples
let path_obj = Path::new("./src/path/mod.rs");
let path1 = path::canonicalize_as_string(&path_obj);
let path2 = path::canonicalize_or("./src/path/mod.rs", "/src/path/mod.rs");
assert_eq!(path1.unwrap(), path2);
// get last modified time
let time = path::get_last_modified_time("./src/path/mod.rs").unwrap();
assert!(time > 0);
}
Installation
In order to use this library, just add it as a dependency:
[dependencies]
fsio = "^0.4.1"
If you need access to temporary file paths, enable the temp-path feature as follows:
[dependencies]
fsio = { version = "*", features = ["temp-path"] }
API Documentation
See full docs at: API Docs
Contributing
Release History
See Changelog
License
Developed by Sagie Gur-Ari and licensed under the Apache 2 open source license.
Dependencies
~0–310KB