😊
(Swift)UInt8の配列をバイナリファイルとして保存する
方法その1
Dataのwrite()
メソッドを使うのが最も簡単です。
import Foundation
let a: [UInt8] = [0x12, 0x34, 0x56, 0x78]
let d = Data(a)
do {
try d.write(to: URL(string: "file:///path/to/file")!)
} catch {
print(error)
}
方法その2
FileHandleを使う方法もあります。以下に実装例を示します。
import Foundation
extension Array where Element == UInt8 {
func write(_ path: String) -> Int {
if !FileManager.default.createFile(atPath: path, contents: nil, attributes: nil) {
return -1
}
guard let fh = FileHandle(forWritingAtPath: path) else {
return -2
}
fh.seekToEndOfFile()
fh.write(Data(self))
fh.closeFile()
return self.count
}
}
(補足)ファイルの有無にかかわらず空のファイルを作るためcreateFileを実行しています。
Discussion