gpt4 book ai didi

ios - Swift - 合并文件

转载 作者:行者123 更新时间:2023-11-28 12:32:51 27 4
gpt4 key购买 nike

如何在 Swift/iOS 中合并文件? FileManager 可以移动和复制项目,但我没有看到任何有关合并文件的信息。我想要类似的东西

FileManager.default.merge(文件:[URL],到位置:URL)抛出

文件可能很大,所以我宁愿避免在内存中传递它们的数据。

=== 这是我自己的内存合并:

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 的指导)

extension FileManager {
func merge(files: [URL], to destination: URL, chunkSize: Int = 1000000) throws {
try FileManager.default.createFile(atPath: destination.path, contents: nil, attributes: nil)
let writer = try FileHandle(forWritingTo: destination)
try files.forEach({ partLocation in
let reader = try FileHandle(forReadingFrom: partLocation)
var data = reader.readData(ofLength: chunkSize)
while data.count > 0 {
writer.write(data)
data = reader.readData(ofLength: chunkSize)
}
reader.closeFile()
})
writer.closeFile()
}
}

关于ios - Swift - 合并文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41656808/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com