1个不稳定版本
使用旧的Rust 2015
0.12.3 | 2020年12月27日 |
---|
#2191 在 数据库接口
505 每月下载次数
在 3 个Crate中使用 (2 个直接使用)
22KB
382 行
filemagic-rs
filemagic是Rust的libmagic库的封装,该库支持大多数Unix系统上的file命令。该包提供了一个简单的Rust API,用于通过libmagic附带的大量魔术字符串数据库识别文件。它还可以加载自定义的魔术字符串数据库。
要求
Rust 1.40.0
或更高稳定版本libmagic
- macOS:
brew install libmagic
- Linux:
apt install libmagic1 libmagic-dev
- macOS:
用法
将依赖项添加到您的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
参考
- robo9k rust-magic & rust-magic-sys
- Aaron Iles
依赖项
~145KB