#ios #swift #zip
Вопрос:
Мне нужно создать простой zip-файл с файлами, включенными без родительского каталога в swift.
Я нашел хорошее решение у Робина Кунде https://recoursive.com/2021/02/25/create_zip_archive_using_only_foundation/ но у файлов есть родительский каталог в zip-файле.
Поэтому, когда вы распаковываете файлы, появляется каталог с именем, например «Документы». Мне не нужно реальное сжатие или другие функции zip. Наш серверный сервер проверяет содержимое, и папка должна быть удалена.
Я не думаю, что это возможно даже без библиотеки C 🙁
Я попытался декодировать ZIP-файл в UTF-8, удалить имена папок и сохранить данные в файл. Файл был поврежден.
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)
}