Swift/iOSでファイルをマージする方法はありますか? FileManager
はアイテムを移動してコピーすることができますが、ファイルのマージについては何も見ていません。私は、ファイルが潜在的に大きなものとなりますので、私はむしろ、メモリ内にデータを渡すことを避けるだろうSwift - merge files
FileManager.default.merge(files: [URL], to location: URL) throws
ようなものを持っているしたいと思います。ここ
===メモリマージに私自身である:ここでは
let data = NSMutableData()
files.forEach({ partLocation in
guard let partData = NSData(contentsOf: partLocation) else { return }
data.append(partData as Data)
do {
try FileManager.default.removeItem(at: partLocation)
} catch {
print("error \(error)")
}
})
data.write(to: destination, atomically: true)
料理のオプションが常にありますあなた自身の。宛先への書き込み中に連続して各ファイルから読み込みます。 – Alexander
"目的地に追加する"のようなものはありますか?可能であれば、私はファイル全体を読んだり、メモリ使用量を制限するように書いてはいけません。 – Guig
そのため、あなたは 'FileHandle.readData(ofLength:Int)'を持っています。あなたは4kbのチャンクのようなものを読んでループにして、それらを出力に書き出すことができます。バッファを大きくすると、カーネルのコンテキスト切り替えのオーバーヘッドを最小限に抑えることでパフォーマンスが向上しますが、メモリを増やすことになります – Alexander