# FileType
**Repository Path**: mirrors_jaywcjlove/FileType
## Basic Information
- **Project Name**: FileType
- **Description**: This tool checks a file’s MIME type using magic bytes and can retrieve the file extension from the MIME type.
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-08-16
- **Last Updated**: 2025-09-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
FileType
===
This tool detects a file’s MIME type using magic bytes and can retrieve the file extension based on the MIME type.
It can identify the MIME type of `Data`, based on [Swime](https://github.com/sendyhalim/Swime) and ported from [file-type](https://www.npmjs.com/package/file-type).
The [`Extensions`](./Sources/FileType/Supported.swift), [`mimeTypes`](./Sources/FileType/Supported.swift), and [`mimeTypesAll`](./Sources/FileType/Supported.swift) data in the dependency package are all generated by scripts based on [file-type](https://www.npmjs.com/package/file-type).
The function for checking whether the bytes match the `MimeType` specification is generated from a [`mapping.js`](./scripts/mapping.js) mapping file created using data from the `file-type` package.
Since the data may not always be accurate, it can be corrected by modifying the [`mapping.js`](./scripts/mapping.js) file.
## Installation
### Swift Package Manager
Add CodeMirror to your project using Xcode:
1. In Xcode, go to `File` → `Add Package Dependencies...`
2. Enter the repository URL: `https://github.com/jaywcjlove/FileType.git`
3. Click `Add Package`
Or add it to your `Package.swift` file:
```swift
dependencies: [
.package(url: "https://github.com/jaywcjlove/FileType.git", from: "1.0.0")
]
```
## Usage
Inspect mime type
```swift
import FileType
let path = "/path/to/some-file.jpg"
let url = URL(fileURLWithPath: path, isDirectory: false)
let data = try! Data(contentsOf: url)
let mimeType = FileType.mimeType(data: data)
mimeType?.type == .jpg // true
mimeType! // MimeType(mime: "image/jpeg", ext: "jpg", type: .jpg)
```
Get the file extension from a MIME type
```swift
let avroMimeType = MimeType.mimeTypesAll.first { $0.mime == "application/avro" }
if let avroMimeType = avroMimeType {
avroMimeType.mime // "application/avro"
avroMimeType.type // .avro
avroMimeType.type.rawValue // "avro"
}
```
```swift
let mimeTypes = MimeType.mimeTypes.first(where: { $0.key == "application/mp4" })
if let mimeTypes = mimeTypes {
mimeTypes.compressible
mimeTypes.extensions // ["mp4","mpg4","mp4s","m4p"]
}
```
## Acknowledgments
Thanks to these projects:
- https://github.com/sendyhalim/Swime
- https://github.com/sindresorhus/file-type
- https://github.com/jshttp/mime-db
## License
Licensed under the MIT License.