ファイルサイズをいい感じの値がついた文字列に変換する
Documentファイル直下にあるファイルサイズを取得する
attributesOfItemで指定したパスにあるファイルの属性を取得することができます。
sizeというFileAttributeKey上がるのでそちらでファイルのサイズをbyte形式で取得することができます
let documentPath = NSHomeDirectory() + "/Documents"
guard let fileNames = try? FileManager.default.contentsOfDirectory(atPath: documentPath) else {
return
}
let fileAttributes = try! FileManager.default.attributesOfItem(atPath: documentPath + "/" + fileNames[0])
print(fileAttributes[.size])
出力結果は以下のようになりました。
1004303
ByteCountFormatterでいい感じの値に変換する
ファイルサイズを画面に表示する際1004303bytesと表示しても良いですが、桁数がデカすぎるとどれくらいのサイズなのかパッと把握することができません、なので適当なフォーマットに変換してあげる必要があります。
ByteCountFormatter.Unitsを使えばいい感じの値に変換してくれます。
.useAllを指定することでバイトからヨタバイトの値まで任意に判定してくれます、個別に値を指定することも可能なのでキロバイト、メガバイトの2つの範囲で変更したい場合は[.useKB, .useMB]とすれば良さそうです
if let bytes = fileAttributes[.size] as? Int64 {
let bcf = ByteCountFormatter()
bcf.allowedUnits = [.useAll]
bcf.countStyle = .file
print(bcf.string(fromByteCount: bytes))
}
出力結果は以下のようになりました、
1 MB
補足
KiroBiteとKibiBiteの違いを理解していなかったのですが以下を見ると10進数のビットで計算すると1000で1kiroBite, バイナリで計算すると1024で1kibiBiteになるようです
https://developer.apple.com/documentation/foundation/unitinformationstorage