Expand description
§file_type
FileType
§Getting Started
A file type. The file type is determined by examining the file or bytes against known file signatures and file extensions.
Signature, extension and media type data are provided by: The National Archives PRONOM Apache HTTPD Linguist
§Example
Detect a Java class file from bytes:
use file_type::FileType;
let file_type = FileType::from_bytes(b"\xCA\xFE\xBA\xBE");
assert_eq!(file_type.name(), "Java Class File");
assert_eq!(file_type.media_types(), Vec::<String>::new());
assert_eq!(file_type.extensions(), vec!["class"]);
Detect the file type from a file:
use file_type::FileType;
use std::path::Path;
#[tokio::main]
async fn main() {
let file_path = Path::new("image.png");
let file_type = FileType::try_from_file(file_path).await.expect("file type not found");
assert_eq!(file_type.id(), "fmt/11");
assert_eq!(file_type.name(), "Portable Network Graphics");
assert_eq!(file_type.extensions(), vec!["png"]);
assert_eq!(file_type.media_types(), vec!["image/png"]);
}
Detect the file type from a file synchronously:
use file_type::FileType;
use std::path::Path;
let file_path = Path::new("image.png");
let file_type = FileType::try_from_file_sync(file_path).expect("file type not found");
assert_eq!(file_type.id(), "fmt/11");
assert_eq!(file_type.name(), "Portable Network Graphics");
assert_eq!(file_type.extensions(), vec!["png"]);
assert_eq!(file_type.media_types(), vec!["image/png"]);
§Supported File Types
§Safety
This crate uses #![forbid(unsafe_code)]
to ensure everything is implemented in 100% safe Rust.
Modules§
Structs§
- A file type. The file type is determined by examining the file or bytes against known file signatures and file extensions.
Enums§
- Errors that can occur when determining the file type
Type Aliases§
- File type result type