9 个稳定版本
2.2.1 | 2024年5月22日 |
---|---|
2.1.0 | 2024年1月8日 |
2.0.0 | 2023年12月24日 |
1.1.0 | 2023年11月4日 |
1.0.3 | 2023年10月30日 |
#304 在 文件系统
121 每月下载量
用于 7 crates
21KB
283 行
FSPP
FSPP 代表 Filesystem++,正如其名所示。它是一个更好的、更高级的文件系统任务库。它还可以根据操作系统转换前后斜杠。
该包包含读取/写入文件、解压 zip 归档、创建目录等函数。它还使 fs_action 中的函数能够同时与文件和文件夹一起工作!而 STD 中的替代方案不太直观,并且不能同时与文件和文件夹一起工作,而是只能处理其中一个。FSPP 还有一个移动文件和文件夹的函数,而 STD 由于某种原因没有这个功能!
FSPP 还可以非常小巧!所有功能都是通过功能启用/禁用的,因此您可以让 FSPP 只提供 Path
结构和 PathType
枚举!另一方面,您也可以启用所有功能,例如 directory
、file
、fs_action
模块,以及 archive
、archive::zip
和 archive::tar
!默认情况下,FSPP 只启用 filesystem
功能,该功能添加了 file
、directory
、fs_action
模块。
如果您想使用所有功能,只需添加带有 full
功能的 FSPP 即可!
总的来说,FSPP 旨在成为 STD 函数的更好、更直观、更易于使用的版本,并在其之上添加更多功能!
功能
1. Creating files and folders.
2. Deleting, copying, moving, etc...
3. Interacting with zip and tar archives.
示例
// Example: Reading, and writing a file. (And seeing what kind of path we have.)
use fspp::*;
fn main() {
let path = Path::new("my_file.txt"); // FSPP path struct.
if path.exists() { // Another way to see if a path exists is by seeing if the .path_type() method returns PathType::Invalid
if path.path_type() == PathType::Directory {
println!("Say whaaaat? The file is actually a directory?");
}
else if path.path_type() == PathType::File {
let contents: String = file::read(&path).unwrap();
println!("{}", contents);
file::write("Hello, world!", &path).unwrap();
}
}
else {
println!("File not found!");
}
}
// Example: Listing a directory.
use fspp::*;
fn main() {
let path = Path::new("my_folder");
// Listing items includes files, and directories.
let items = directory::list_items(&path).unwrap();
let items_recursive = directory::list_items_recursive(&path).unwrap();
}
// Example: Creating, deleting, moving, copying...
use fspp::*;
fn main() {
let file_path = Path::new("my_file.txt");
let folder_path = Path::new("my_folder");
// If the file exists, it will be overwritten! (I should add a file::touch() function.)
file::write("", &file_path).unwrap();
directory::create(&folder_path).unwrap();
let new_file_path = Path::new("my_folder/my_file.txt");
fs_action::mv(&file_path, &new_file_path).unwrap(); // fs_action functions work on both files, and folders.
fs_action::copy(&new_file_path, &file_path).unwrap();
fs_action::delete(&folder_path).unwrap();
}
依赖项
~0–10MB
~107K SLoC