1个不稳定版本

使用旧的Rust 2015

0.12.3 2020年12月27日

#2191数据库接口

Download history 26/week @ 2024-03-13 45/week @ 2024-03-20 52/week @ 2024-03-27 58/week @ 2024-04-03 71/week @ 2024-04-10 70/week @ 2024-04-17 81/week @ 2024-04-24 70/week @ 2024-05-01 80/week @ 2024-05-08 42/week @ 2024-05-15 53/week @ 2024-05-22 155/week @ 2024-05-29 62/week @ 2024-06-05 92/week @ 2024-06-12 80/week @ 2024-06-19 261/week @ 2024-06-26

505 每月下载次数
3 个Crate中使用 (2 个直接使用)

MIT 许可证

22KB
382

filemagic-rs

Build Status Documentation

filemagic是Rustlibmagic库的封装,该库支持大多数Unix系统上的file命令。该包提供了一个简单的Rust API,用于通过libmagic附带的大量魔术字符串数据库识别文件。它还可以加载自定义的魔术字符串数据库。

要求

  • Rust 1.40.0或更高稳定版本
  • libmagic
    • macOS: brew install libmagic
    • Linux: apt install libmagic1 libmagic-dev

用法

将依赖项添加到您的Cargo.toml文件中

filemagic = { git = "https://github.com/marirs/filemagic-rs", branch = "master" }

使用宏

  • 使用默认的libmagic数据库
use filemagic::magic;

fn main() {
  let test_file_path = "/path/to/file";
  let magic = magic!().expect("error");
  
  println!("{}", magic.file(&test_file_path).expect("error"));
}
  • 使用自定义Magic数据库
use filemagic::magic;

fn main() {
  let test_file_path = "/path/to/file";
  let databases = vec!["data/db-images-png"];
  
  let magic = magic!(,&databases).expect("error");
  
  println!("{}", magic.file(&test_file_path).expect("error"));
}

使用函数

  • 使用默认的libmagic数据库
use filemagic::Magic;

fn main() {
    let test_file_path = "/path/to/file";
    // Create a new default configuration
    let cookie = Magic::open(Default::default()).expect("error");
    cookie.load::<String>(&[]).expect("error");
    let magic = cookie.file(&test_file_path).expect("error in magic");
    println!("magic= {}", magic);
}
  • 使用自定义Magic数据库
use filemagic::Magic;

fn main() {
    // Create a new default configuration
    let cookie = Magic::open(Default::default()).expect("error");
    // Load one specific magic database
    let databases = vec!["data/db-images-png"];
    assert!(cookie.load(&databases).is_ok());

    // Recognize the magic of a test file
    let test_file_path = "data/rust-logo-128x128-blk.png";
    let expected_magic = "PNG image data, 128 x 128, 8-bit/color RGBA, non-interlaced";
    assert_eq!(cookie.file(&test_file_path).unwrap(), expected_magic);
}

生成文档

cargo doc --release

参考

依赖项

~145KB