Swift获取文件URL的元数据属性
Swift获取文件URL的元数据属性

Swift获取文件URL的元数据属性

fileURL.resourceValues 是 macOS/iOS 中用于获取文件 URL 各种元数据属性(Resource Values)的方式之一,基于 URLResourceValues 类型。

基本用法

let resourceValues = try fileURL.resourceValues(forKeys: [.fileSizeKey, .isDirectoryKey])

fileURL 是一个指向文件或目录的 URL(必须是本地文件 file:// 类型)。

resourceValues(forKeys:) 会返回该 URL 的一组元数据(封装为 URLResourceValues属性)。

常用属性

以下是部分可以从文件中读取的 .resourceKeys 列表:

1、.fileSizeKey:属性fileSize,文件大小(单位:字节)。

2、.isDirectoryKey:属性isDirectory,是否是目录。

3、.isRegularFileKey:属性isRegularFile,是否是常规文件。

4、.creationDateKey:属性creationDate,创建时间。

5、.contentModificationDateKey:属性contentModificationDate,最后修改时间。

6、.nameKey:属性name,文件名称。

7、.localizedNameKey:属性localizedName,本地化名称(如显示名)。

8、.isReadableKey:属性isReadable,是否可读。

9、.isWritableKey:属性isWritable,是否可写。

10、.fileResourceTypeKey:属性fileResourceType,文件类型(目录、文件、符号链接等)。

11、.isHiddenKey:属性isHidden,是否是隐藏文件。

12、.totalFileSizeKey:属性totalFileSize,对于包或目录,返回其总大小。

13、.volumeAvailableCapacityKey:属性volumeAvailableCapacity,所在卷的剩余容量。

14、.isSymbolicLinkKey:属性isSymbolicLink,是否是符号链接。

使用场景

1、读取文件大小和名称

let fileURL = URL(fileURLWithPath: "/Users/you/Desktop/image.jpg")

do {
    let values = try fileURL.resourceValues(forKeys: [.fileSizeKey, .nameKey])
    if let size = values.fileSize, let name = values.name {
        print("文件名: \(name)")
        print("文件大小: \(size) 字节")
    }
} catch {
    print("读取文件属性失败: \(error)")
}

2、读取图片文件的Finder大小

let resourceValues = try? fileURL.resourceValues(forKeys: [.totalFileAllocatedSizeKey])
let DiskSize = resourceValues?.totalFileAllocatedSize ?? 0

因为图片文件在Finder和实际大小不一样,所以需要通过 . totalFileAllocatedSizeKey 键获取大小。相关内容请见《SwiftUI获取文件大小/占用空间》。

总结

通过URL的resourceValues方法,可以获取文件的元属性。

如果想要获取文件的实际磁盘占用,只能通过URL的resourceValues(forKeys:)获取。

相关文章

1、Swift URL类:https://fangjunyu.com/2024/11/01/swift-url-%e5%ae%9e%e4%be%8b%e7%9b%b8%e5%85%b3%e7%9f%a5%e8%af%86/

2、SwiftUI获取文件大小/占用空间:https://fangjunyu.com/2025/07/10/swiftui%e8%8e%b7%e5%8f%96%e6%96%87%e4%bb%b6%e5%a4%a7%e5%b0%8f-%e5%8d%a0%e7%94%a8%e7%a9%ba%e9%97%b4/

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注