24 次重大发布

0.25.0 2024 年 5 月 8 日
0.24.0 2024 年 2 月 3 日
0.23.0 2023 年 12 月 11 日
0.22.0 2023 年 11 月 4 日
0.4.0 2021 年 10 月 21 日

#57文件系统

Download history 3420/week @ 2024-05-03 3570/week @ 2024-05-10 4101/week @ 2024-05-17 3201/week @ 2024-05-24 3525/week @ 2024-05-31 3679/week @ 2024-06-07 3616/week @ 2024-06-14 3253/week @ 2024-06-21 2823/week @ 2024-06-28 2632/week @ 2024-07-05 2895/week @ 2024-07-12 3399/week @ 2024-07-19 4056/week @ 2024-07-26 3842/week @ 2024-08-02 4267/week @ 2024-08-09 3377/week @ 2024-08-16

16,259 每月下载次数
19 Crate 中使用(直接使用 16 个)

MIT/Apache

205KB
4.5K SLoC

file-format

Build Crates.io Docs Rust License

用于确定给定文件或流的文件格式的 Crate。

它提供了一系列功能,用于识别广泛的文件格式,包括 ZIP、复合文件二进制(CFB)、可扩展标记语言(XML)等。

它检查文件的签名以确定其格式,并在可用时智能地使用特定的读取器进行准确识别。如果签名不被识别,Crate 将回退到默认的文件格式,即任意二进制数据(BIN)。

示例

从文件中确定

use file_format::{FileFormat, Kind};

let fmt = FileFormat::from_file("fixtures/document/sample.pdf")?;
assert_eq!(fmt, FileFormat::PortableDocumentFormat);
assert_eq!(fmt.name(), "Portable Document Format");
assert_eq!(fmt.short_name(), Some("PDF"));
assert_eq!(fmt.media_type(), "application/pdf");
assert_eq!(fmt.extension(), "pdf");
assert_eq!(fmt.kind(), Kind::Document);

从字节中确定

use file_format::{FileFormat, Kind};

let fmt = FileFormat::from_bytes(&[0xFF, 0xD8, 0xFF]);
assert_eq!(fmt, FileFormat::JointPhotographicExpertsGroup);
assert_eq!(fmt.name(), "Joint Photographic Experts Group");
assert_eq!(fmt.short_name(), Some("JPEG"));
assert_eq!(fmt.media_type(), "image/jpeg");
assert_eq!(fmt.extension(), "jpg");
assert_eq!(fmt.kind(), Kind::Image);

用法

将以下内容添加到您的 Cargo.toml

[dependencies]
file-format = "0.25"

Crate 功能

以下所有功能默认都未启用。

读取器功能

这些功能启用了对需要特定读取器进行识别的文件格式的检测。

  • reader - 启用所有读取器功能。
  • reader-asf - 启用基于高级系统格式(ASF)的文件格式检测。
  • reader-cfb - 启用基于复合文件二进制(CFB)的文件格式检测。
  • reader-ebml - 启用基于可扩展二进制元语言(EBML)的文件格式检测。
  • reader-exe - 启用基于 MS-DOS 可执行文件(EXE)的文件格式检测。
  • reader-mp4 - 启用基于 MPEG-4 Part 14(MP4)的文件格式检测。
  • reader-pdf - 启用基于可移植文档格式(PDF)的文件格式检测。
  • reader-rm - 启用基于 RealMedia(RM)的文件格式检测。
  • reader-sqlite3 - 启用基于 SQLite 3 的文件格式检测。
  • reader-txt - 启用纯文本(TXT)文件格式检测。
  • reader-xml - 启用基于可扩展标记语言(XML)的文件格式检测。
  • reader-zip - 启用基于 ZIP 的文件格式检测。

支持的文件格式

归档

  • 7-Zip (7Z)
  • ACE
  • ALZ
  • 由 Robert Jung 归档(ARJ)
  • Cabinet (CAB)
  • 可扩展归档(XAR)
  • LArc (LZS)
  • LHA
  • Mozilla 归档(MAR)
  • 多层归档(MLA)
  • PMarc (PMA)
  • Roshal 归档(RAR)
  • SeqBox (SBX)
  • Squashfs
  • StuffIt (SIT)
  • StuffIt X (SITX)
  • 磁带归档(TAR)
  • UNIX 归档程序(归档程序)
  • Windows 映像格式(WIM)
  • ZIP
  • ZPAQ
  • cpio
  • zoo

音频

  • 8位采样语音(8SVX)
  • 自适应多速率(AMR)
  • 高级音频编码(AAC)
  • Apple iTunes 音频(M4A)
  • Apple iTunes 电子书(M4B)
  • Apple iTunes 受保护音频(M4P)
  • Au
  • 音频编解码器 3(AC-3)
  • 音频交换文件格式(AIFF)
  • 音频视觉研究(AVR)
  • 创意语音(VOC)
  • FastTracker 2 扩展模块(XM)
  • Flash MP4 音频(F4A)
  • Flash MP4 电子书(F4B)
  • 免费无损音频编解码器(FLAC)
  • Impulse Tracker 模块(IT)
  • MPEG-1/2 音频层 2(MP2)
  • MPEG-1/2 音频层 3(MP3)
  • MPEG-4 第 14 部分 音频(MP4)
  • Matroska 音频(MKA)
  • Monkey's Audio(APE)
  • Musepack(MPC)
  • 乐器数字接口(MIDI)
  • Ogg FLAC(OGA)
  • Ogg Opus(Opus)
  • Ogg Speex(Speex)
  • Ogg Vorbis(Vorbis)
  • 高通 PureVoice(QCP)
  • 相当好的音频(QOA)
  • RealAudio(RA)
  • Scream Tracker 3 模块(S3M)
  • 索尼 DSD 流文件(DSF)
  • SoundFont 2(SF2)
  • Ultimate Soundtracker 模块(MOD)
  • WavPack(WV)
  • 波形音频(WAV)
  • Windows 媒体音频(WMA)

压缩

  • BZip3(BZ3)
  • LZ4
  • Lempel-Ziv 状态熵(LZFSE)
  • Lempel-Ziv-Markov 链算法(LZMA)
  • 长距离 ZIP(LRZIP)
  • Snappy
  • UNIX 压缩(压缩)
  • XZ
  • Zstandard(zstd)
  • bzip(BZ)
  • bzip2(BZ2)
  • gzip(GZ)
  • lzip(LZ)
  • lzop(LZO)
  • rzip(RZ)

数据库

  • Microsoft Access 2007 数据库(ACCDB)
  • Microsoft Access 数据库(MDB)
  • Microsoft Works 数据库(WDB)
  • OpenDocument 数据库(ODB)
  • SQLite 3

图表

  • 电路图文档(CDDX)
  • Microsoft Visio 绘图(VSD)
  • Office Open XML 绘图(VSDX)
  • StarChart(SDS)
  • draw.io(DRAWIO)

磁盘

  • Amiga 磁盘文件(ADF)
  • Apple 磁盘映像(DMG)
  • ISO 9660(ISO)
  • Microsoft 虚拟硬盘(VHD)
  • Microsoft 虚拟硬盘 2(VHDX)
  • QEMU 写时复制(QCOW)
  • 虚拟机磁盘(VMDK)
  • VirtualBox 虚拟磁盘映像(VDI)

文档

  • AbiWord(ABW)
  • AbiWord 模板(AWT)
  • Adobe InDesign 文档(INDD)
  • DjVu
  • InDesign 标记语言(IDML)
  • LaTeX(TeX)
  • Microsoft Publisher 文档(PUB)
  • Microsoft Word 文档(DOC)
  • Microsoft Works 文字处理器(WPS)
  • Microsoft Write(WRI)
  • Office Open XML 文档(DOCX)
  • OpenDocument 文本(ODT)
  • OpenDocument 文本主(ODM)
  • OpenDocument 文本主模板(OTM)
  • OpenDocument 文本模板(OTT)
  • OpenXPS(OXPS)
  • 便携式文档格式(PDF)
  • PostScript(PS)
  • 富文本格式(RTF)
  • StarWriter(SDW)
  • Sun XML Writer(SXW)
  • Sun XML Writer 全局(SGW)
  • Sun XML Writer 模板(STW)
  • 统一办公格式文本(UOT)
  • WordPerfect 文档(WPD)

电子书

  • 宽带电子书(BBeB)
  • 电子出版物(EPUB)
  • 小说书(FB2)
  • 小说书 ZIP(FBZ)
  • Microsoft Reader(LIT)
  • Mobipocket(MOBI)

可执行文件

  • Commodore 64 程序(PRG)
  • 通用目标文件格式(COFF)
  • Dalvik 可执行文件(DEX)
  • 动态链接库(DLL)
  • 可执行和链接格式(ELF)
  • Java 类
  • LLVM 位码(BC)
  • 线性可执行文件(LE)
  • Lua 字节码
  • MS-DOS 可执行文件(EXE)
  • Mach-O
  • 新可执行文件(NE)
  • Nintendo Switch 可执行文件(NSO)
  • 优化 Dalvik 可执行文件(DEY)
  • 便携式可执行文件(PE)
  • WebAssembly 二进制文件(Wasm)
  • Xbox 360 可执行文件(XEX)
  • Xbox 可执行文件(XBE)

字体

  • BMFont ASCII(FNT)
  • BMFont 二进制(FNT)
  • 嵌入式 OpenType(EOT)
  • 字形
  • OpenType(OTF)
  • TrueType (TTF)
  • Web 开放字体格式 (WOFF)
  • Web 开放字体格式 2 (WOFF2)

公式

  • 数学标记语言 (MathML)
  • OpenDocument 公式 (ODF)
  • OpenDocument 公式模板 (OTF)
  • StarMath (SMF)
  • Sun XML Math (SXM)

地理空间

  • 灵活互操作数据传输 (FIT)
  • GPS 交换格式 (GPX)
  • 地理标记语言 (GML)
  • 密钥孔标记语言 (KML)
  • 密钥孔标记语言 ZIP (KMZ)
  • Shapefile (SHP)
  • 训练中心 XML (TCX)

图像

  • AV1 图像文件格式 (AVIF)
  • AV1 图像文件格式序列 (AVIFS)
  • 可调整可缩放纹理压缩 (ASTC)
  • Adobe Illustrator 图稿 (AI)
  • Adobe Photoshop 文档 (PSD)
  • 动画可移植网络图形 (APNG)
  • Apple 图标图像 (ICNS)
  • 更好的可移植图形 (BPG)
  • 佳能 Raw (CRW)
  • 佳能 Raw 2 (CR2)
  • 佳能 Raw 3 (CR3)
  • Cineon (CIN)
  • 数字图片交换 (DPX)
  • 封装后置脚本 (EPS)
  • 实验计算设施 (XCF)
  • 免费无损图像格式 (FLIF)
  • 富士胶片 Raw (RAF)
  • 图形交换格式 (GIF)
  • 高效率图像编码 (HEIC)
  • 高效率图像编码序列 (HEICS)
  • 高效率图像文件格式 (HEIF)
  • 高效率图像文件格式序列 (HEIFS)
  • JPEG 2000 编码流 (J2C)
  • JPEG 2000 第 1 部分 (JP2)
  • JPEG 2000 第 2 部分 (JPX)
  • JPEG 2000 第 6 部分 (JPM)
  • JPEG 扩展范围 (JXR)
  • JPEG 网络图形 (JNG)
  • JPEG XL (JXL)
  • JPEG-LS (JLS)
  • 联合摄影专家组 (JPEG)
  • Khronos 纹理 (KTX)
  • Khronos 纹理 2 (KTX2)
  • Magick 图像文件格式 (MIFF)
  • Microsoft DirectDraw Surface (DDS)
  • 多图像网络图形 (MNG)
  • 尼康电子文件 (NEF)
  • 奥林巴斯 Raw 格式 (ORF)
  • OpenDocument 图形 (ODG)
  • OpenDocument 图形模板 (OTG)
  • OpenEXR (EXR)
  • OpenRaster (ORA)
  • 松下 Raw (RW2)
  • 图片交换 (PCX)
  • 可移植任意地图 (PAM)
  • 可移植位图 (PBM)
  • 可移植浮点地图 (PFM)
  • 可移植灰度地图 (PGM)
  • 可移植网络图形 (PNG)
  • 可移植像素地图 (PPM)
  • 相当好的图像 (QOI)
  • 辐射 HDR (HDR)
  • 可缩放矢量图形 (SVG)
  • 硅图形图像 (SGI)
  • 草图
  • 草图 43
  • StarDraw (SDA)
  • Sun XML Draw (SXD)
  • Sun XML Draw 模板 (STD)
  • 标签图像文件格式 (TIFF)
  • WebP
  • Windows 动画光标 (ANI)
  • Windows 位图 (BMP)
  • Windows 光标 (CUR)
  • Windows 图标 (ICO)
  • Windows 元文件 (WMF)
  • WordPerfect 图形 (WPG)
  • X PixMap (XPM)
  • farbfeld (FF)

元数据

  • Android 二进制 XML (AXML)
  • BitTorrent (Torrent)
  • CD 音频 (CDA)
  • 元信息封装 (MIE)
  • TASTy
  • Windows 快捷方式 (LNK)
  • macOS 别名

模型

  • 3D 制造格式 (3MF)
  • 3D Studio (3DS)
  • 3D Studio Max (MAX)
  • 增材制造格式 (AMF)
  • AutoCAD 绘图 (DWG)
  • Autodesk 123D (123DX)
  • Autodesk Alias (WIRE)
  • Autodesk Inventor 装配 (IAM)
  • Autodesk Inventor 绘图 (IDW)
  • Autodesk Inventor 零件 (IPT)
  • Autodesk Inventor 演示 (IPN)
  • Blender (BLEND)
  • Cinema 4D (C4D)
  • 协作设计活动 (COLLADA)
  • 设计 Web 格式 (DWF)
  • 设计 Web 格式 XPS (DWFX)
  • 绘图交换格式 ASCII (DXF)
  • 绘图交换格式 二进制 (DXF)
  • 可扩展 3D (X3D)
  • Filmbox (FBX)
  • Fusion 360 (F3D)
  • GL 传输格式 二进制 (GLB)
  • Google Draco (Draco)
  • 初始图形交换规范 (IGES)
  • 地震间导出(IQE)
  • 地震间模型(IQM)
  • MagicaVoxel(VOX)
  • Maya ASCII(MA)
  • Maya 二进制(MB)
  • 3D 模型 ASCII(A3D)
  • 3D 模型二进制(M3D)
  • 多边形 ASCII(PLY)
  • 多边形二进制(PLY)
  • SketchUp(SKP)
  • SolidWorks 零件(SLDASM)
  • SolidWorks 绘图(SLDDRW)
  • SolidWorks 零件(SLDPRT)
  • SpaceClaim 文档(SCDOC)
  • 产品模型数据交换标准(STEP)
  • 立体光刻 ASCII(STL)
  • 通用 3D(U3D)
  • 通用场景描述 ASCII(USDA)
  • 通用场景描述二进制(USDC)
  • 通用场景描述 ZIP(USDZ)
  • 虚拟现实建模语言(VRML)
  • openNURBS(3DM)

其他

  • ActiveMime(MSO)
  • 高级系统格式(ASF)
  • Android 资源存储容器(ARSC)
  • Apache Arrow 列式(Arrow)
  • Apache Avro(Avro)
  • Apache Parquet(Parquet)
  • 任意二进制数据(BIN)
  • Atom
  • Clojure 脚本
  • 复合文件二进制(CFB)
  • DER 证书(DER)
  • 医学数字成像和通信(DICOM)
  • 可扩展二进制元语言(EBML)
  • 可扩展标记语言(XML)
  • 可扩展样式表语言转换(XSLT)
  • Flash CS5 项目(FLA)
  • Flash 项目(FLA)
  • 灵活图像传输系统(FITS)
  • 超文本标记语言(HTML)
  • ICC 配置文件(ICC)
  • JSON 源
  • Java 密钥库(JKS)
  • Lua 脚本
  • MPEG-4 第 14 部分(MP4)
  • MS-DOS 批处理(Batch)
  • Microsoft 编译的 HTML 帮助(CHM)
  • Microsoft 项目计划(MPP)
  • Microsoft Visual Studio 解决方案(SLN)
  • MusicXML
  • MusicXML ZIP(MXL)
  • Ogg 多路复用媒体(OGX)
  • PCAP 导出(PCAP)
  • PCAP 下一个生成导出(PCAPNG)
  • PEM 证书(PEM)
  • PEM 证书签名请求(PEM)
  • PEM 私钥(PEM)
  • PEM 公钥(PEM)
  • PGP 消息(PGP)
  • PGP 私钥块(PGP)
  • PGP 公钥块(PGP)
  • PGP 签名(PGP)
  • PGP 签名消息(PGP)
  • Perl 脚本
  • 个人存储表(PST)
  • 纯文本(TXT)
  • Python 脚本
  • RealMedia(RM)
  • 简单聚合(RSS)
  • Ruby 脚本
  • Shell 脚本
  • 简单对象访问协议(SOAP)
  • 小 Web 格式(SWF)
  • 瓦片地图 XML(TMX)
  • 瓦片集 XML(TSX)
  • 工具命令语言脚本(Tcl 脚本)
  • WebAssembly 文本(WAT)
  • WordPerfect 宏(WPM)
  • XML 本地化交换文件格式(XLIFF)
  • 年龄加密
  • gettext 机器对象(MO)
  • 日历(ICS)
  • 日历(VCS)
  • 名片(VCF)

  • Adobe 集成运行时(AIR)
  • Android 应用程序包(AAB)
  • Android 包(APK)
  • AppImage
  • Debian 包(DEB)
  • 企业应用程序归档(EAR)
  • Google Chrome 扩展(CRX)
  • Java 归档(JAR)
  • Microsoft 软件安装程序(MSI)
  • Microsoft Visual Studio 扩展(VSIX)
  • Nintendo Switch 包(NSP)
  • Red Hat 软件包管理器(RPM)
  • Web 应用程序归档(WAR)
  • Windows 应用程序包(APPXBUNDLE)
  • Windows 应用程序包(APPX)
  • XAP
  • XPInstall(XPI)
  • iOS 应用程序商店包(IPA)

播放列表

  • 高级流重定向器(ASX)
  • MP3 URL(M3U)
  • MPEG-DASH MPD(MPD)
  • SHOUTcast 播放列表(PLS)
  • Windows 媒体播放列表(WPL)
  • XML 可共享播放列表格式(XSPF)

演示

  • Corel 演示文稿(SHW)
  • Corel 演示文稿 7(SHW)
  • Microsoft PowerPoint 演示文稿(PPT)
  • Office Open XML 演示文稿(PPTX)
  • OpenDocument 演示文稿(ODP)
  • OpenDocument 演示文稿模板(OTP)
  • StarImpress(SDD)
  • 太阳XML演示(SXI)
  • 太阳XML演示模板(STI)
  • 统一办公格式演示(UOP)
  • WordPerfect演示(SHW)

只读存储器(ROM)

  • 雅达利7800 ROM(A78)
  • Commodore 64卡带(CRT)
  • Game Boy Advance ROM(GBA)
  • Game Boy Color ROM(GBC)
  • Game Boy ROM(GB)
  • Game Gear ROM(GG)
  • Mega Drive ROM(MD)
  • Neo Geo Pocket Color ROM(NGC)
  • Neo Geo Pocket ROM(NGP)
  • Nintendo 64 ROM(Z64)
  • Nintendo DS ROM(NDS)
  • Nintendo Entertainment System ROM(NES)
  • Nintendo Switch ROM(XCI)
  • 世嘉大师系统 ROM(SMS)

电子表格

  • Microsoft Excel 电子表格(XLS)
  • Microsoft Works 6 电子表格(XLR)
  • Microsoft Works 电子表格(WKS)
  • Office Open XML 电子表格(XLSX)
  • OpenDocument 电子表格(ODS)
  • OpenDocument 电子表格模板(OTS)
  • StarCalc(SDC)
  • 太阳XML Calc(SXC)
  • 太阳XML Calc 模板(STC)
  • 统一办公格式电子表格(UOS)

字幕

  • MPEG-4 第14部分字幕(MP4)
  • Matroska 字幕(MKS)
  • SubRip 文本(SRT)
  • 时间文本标记语言(TTML)
  • 通用字幕格式(USF)
  • 网络视频文本轨道(WebVTT)

视频

  • 第三代合作伙伴计划(3GPP)
  • 第三代合作伙伴计划2(3GPP2)
  • 动作媒体视频(AMV)
  • 苹果QuickTime(MOV)
  • 苹果iTunes视频(M4V)
  • 音频视频交错(AVI)
  • Autodesk Animator(FLI)
  • Autodesk Animator Pro(FLC)
  • BDAV MPEG-2传输流(M2TS)
  • Flash MP4受保护视频(F4P)
  • Flash MP4视频(F4V)
  • Flash视频(FLV)
  • JPEG 2000 第3部分(MJ2)
  • MPEG-1/2 视频(MPG)
  • MPEG-2传输流(TS)
  • MPEG-4 第14部分视频(MP4)
  • MTV
  • 材料交换格式(MXF)
  • Matroska 3D视频(MK3D)
  • Matroska视频(MKV)
  • Microsoft数字视频录制(DVR-MS)
  • Ogg媒体(OGM)
  • Ogg Theora(Theora)
  • RealVideo(RV)
  • Silicon Graphics电影(SGI)
  • 索尼电影(MQV)
  • WebM
  • Windows媒体视频(WMV)
  • Windows录制电视节目(WTV)

固定装置

这些固定装置是用于测试目的的文件格式的样本,位于fixtures目录中,并根据类型组织在子目录中。这些样本通常有意缩短以减少大小,这有时会阻止兼容软件完全解码。

许可证

本项目许可为以下之一

无运行时依赖项

功能