#zip-archive #tar-archive #high-level #module #intuitive #path

fspp

Filesystem++ : 以更简洁、更简单的方式访问文件系统

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文件系统

Download history 5/week @ 2024-05-13 212/week @ 2024-05-20 13/week @ 2024-05-27 23/week @ 2024-06-03 15/week @ 2024-06-10 8/week @ 2024-06-17 9/week @ 2024-06-24 2/week @ 2024-07-01 7/week @ 2024-07-22 74/week @ 2024-07-29 25/week @ 2024-08-05 15/week @ 2024-08-12

121 每月下载量
用于 7 crates

MIT 许可证

21KB
283

FSPP

FSPP 代表 Filesystem++,正如其名所示。它是一个更好的、更高级的文件系统任务库。它还可以根据操作系统转换前后斜杠。

该包包含读取/写入文件、解压 zip 归档、创建目录等函数。它还使 fs_action 中的函数能够同时与文件和文件夹一起工作!而 STD 中的替代方案不太直观,并且不能同时与文件和文件夹一起工作,而是只能处理其中一个。FSPP 还有一个移动文件和文件夹的函数,而 STD 由于某种原因没有这个功能!

FSPP 还可以非常小巧!所有功能都是通过功能启用/禁用的,因此您可以让 FSPP 只提供 Path 结构和 PathType 枚举!另一方面,您也可以启用所有功能,例如 directoryfilefs_action 模块,以及 archivearchive::ziparchive::tar!默认情况下,FSPP 只启用 filesystem 功能,该功能添加了 filedirectoryfs_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