You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中如何仅读取文件开头部分内容而不加载整个文件

Swift读取文件前16字节的最优实现

使用FileHandle做定向部分读取是最优方案,不会将整个文件加载到内存,仅读取目标长度的字节内容,大文件场景下也完全不会有内存压力。

新版系统兼容代码(iOS 13.4+/macOS 10.15.4+)

func readFirst16Bytes(from fileURL: URL) throws -> Data {
    let fileHandle = try FileHandle(forReadingFrom: fileURL)
    // 方法执行结束前自动关闭文件句柄,避免资源泄漏
    defer { fileHandle.closeFile() }
    // 仅读取最多16个字节的内容
    return try fileHandle.read(upToCount: 16) ?? Data()
}

全版本兼容代码

如果需要适配更低的系统版本,可以使用经典API实现:

func readFirst16Bytes(from fileURL: URL) throws -> Data {
    let fileHandle = try FileHandle(forReadingFrom: fileURL)
    defer { fileHandle.closeFile() }
    return fileHandle.readData(ofLength: 16)
}

说明

  • 如果文件本身的大小不足16字节,上述方法会直接返回文件全部内容,无需额外判断
  • 必须添加defer关闭文件句柄的逻辑,否则多次调用会出现系统资源占用泄漏的问题

内容的提问来源于stack exchange,提问作者Rob N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:54:07