Wie kann ich Dateien in Swift/iOS zusammenführen? Die FileManager
kann Elemente verschieben und kopieren, aber ich habe nichts über das Zusammenführen von Dateien gesehen. Ich möchte etwas haben, wieSwift - Dateien zusammenführen
FileManager.default.merge(files: [URL], to location: URL) throws
Dateien potenziell groß sein können, so dass ich lieber vermeiden, dass ihre Daten im Speicher übergeben.
=== hier ist meine eigene im Speicher merge:
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)
gibt es immer die Möglichkeit des Kochens dein eigenes. Lesen Sie nacheinander aus jeder Datei, während Sie an das Ziel schreiben. – Alexander
Aber gibt es etwas wie "an das Ziel anhängen"? Wenn möglich, möchte ich vermeiden, die gesamte Datei zu lesen und dann zu schreiben, um die Speicherbelegung zu begrenzen. – Guig
Deshalb haben Sie 'FileHandle.readData (ofLength: Int)'. Sie können eine Schleife erstellen, die etwa 4 KB große Blöcke liest und in die Ausgabe schreibt. Den Puffer größer zu machen, würde die Leistung erhöhen, indem der Overhead des Kernel-Kontext-Switching minimiert wird, würde aber mehr Speicher benötigen. – Alexander