# file-format

[](https://crates.io/crates/file-format)
[](https://docs.rs/file-format)


File format library for Rust.
This crate is for recognizing the format of a file by checking its signature.
## Examples
Determines from a file:
```rust
use file_format::FileFormat;
let format = FileFormat::from_file("fixtures/image/sample.jpg").unwrap();
assert_eq!(format, FileFormat::Jpeg);
assert_eq!(format.media_type(), "image/jpeg");
assert_eq!(format.preferred_extension(), "jpg");
```
Determines from bytes:
```rust
use file_format::FileFormat;
let format = FileFormat::from_bytes("Hello 😊!".as_bytes());
assert_eq!(format, FileFormat::Text);
assert_eq!(format.media_type(), "text/plain");
assert_eq!(format.preferred_extension(), "txt");
```
Determines from an extension:
```rust
use file_format::FileFormat;
let format = FileFormat::from_extension("vcf");
assert_eq!(format, Some(FileFormat::VCard));
```
Determines from a media type:
```rust
use file_format::FileFormat;
let format = FileFormat::from_media_type("image/vnd.adobe.photoshop");
assert_eq!(format, Some(FileFormat::PhotoshopDocument));
```
## References
* [IANA media types](https://www.iana.org/assignments/media-types/media-types.xhtml)
## License
This project is licensed under either of [Apache License, Version 2.0](LICENSE-APACHE) or [MIT license](LICENSE-MIT) at your option.