Create zip file without third party libraries and parent directory in swift

Viewed 201

I need to create a simple zip file with files included without parent directory in swift.

I found a good solution from Robin Kunde https://recoursive.com/2021/02/25/create_zip_archive_using_only_foundation/ but the files have a parent directory in the zip file.

So when you unzip the files, there is a directory with the name e.g. "Documents". I don't need real compression or other zip features. Our backend server checks the content and the folder must be removed.

I don't think, that this is even possible without a C-library :(

I tried to decode the ZIP-file to UTF-8, delete the folder names and save the data to a file. The file was corrupt.

let fm = FileManager.default
    let baseDirectoryUrl = fm.urls(for: .documentDirectory, in: .userDomainMask).first!

    let data = try! Data(contentsOf: baseDirectoryUrl.appendingPathComponent("archive.zip"))
    let str = String(decoding: data, as: UTF8.self)

    let newstr = str.replacingOccurrences(of: "Documents/", with: "")

    do {
        try newstr.write(to: baseDirectoryUrl.appendingPathComponent("archive_without_parent_name.zip"), atomically: true, encoding: .utf8)
    } catch {
        print(error.localizedDescription)
    }
0 Answers
Related