Добрый день! Каким образом в свифте можно разархивировать zip файл, не прибегая ко всяким сторонним фреймворкам? В моем случае, есть zip файл, в котором содержится один текстовый документ, и необходимо получить String этого документа. Какое самое простое решение?
Swift : unzip file
У вас 2 варианта
- использовать чистый нативный способ от Apple, который подразумевает использование libcompression
https://developer.apple.com/documentation/compression/data_compression - использовать библиотеку, которая построена на этом, дабы было проще работать
https://github.com/weichsel/ZIPFoundation
Да, погуглил эту тему. Нашел реализацию нативного способа https://gist.github.com/zadr/c664e61e29bea1b7e3a23e88c5ea74cc
В общем, остановился на этой версии https://github.com/mw99/DataCompression (сам код здесь https://github.com/mw99/DataCompression/blob/master/Sources/DataCompression.swift), т.к. компактна и без ошибок компилируется все. Однако, что-то я все-таки делаю не так.
let zip = try? Data(contentsOf: "/.../test.zip")
let tmp: Data? = zip?.unzip()
let txt: String? = String(data: zip!, encoding: .utf8)
И в результате ничего не получаю.
Каким образом можно выделить внутри zip файла блоки в виде других файлов (например в zip хранится один txt, данные которого нужно скопировать в String)?
Я бы не парился и использовал бы библиотеку ZIPFoundation, она маленькая, простая и будет намного проще работать.
Не хотелось бы добавлять ненужный функционал, да и вообще стороннее не очень люблю. Нужно то всего-лишь взять txt из zip при использовании вышеуказанного DataCompression.swift, в котором ничего лишнего я не увидел. Может просто у кого-либо уже есть опыт подобного?