Решение:
Для того, кто получил эту ошибку:
[SSZipArchive] Не удалось открыть файл при разархивировании. (Ошибка домена = NSPOSIXErrorDomain Code = 20 «Не каталог»)
Убедитесь, что местом назначения является каталог при использовании функции unzipFile.
SSZipArchive.unzipFile(atPath: String, toDestination: String, overwrite: Bool, password: String?)
Вопрос:
Как распаковать архивjson файл с паролем в Swift? Я использовал сторонний SDK и скачал файл, тип файла Data
.
Файл объявлен в виде zip-файла и должен быть распакован в файл json
с паролем .
Я сохраняю файл в FileManager.documentDirectory
и назовите его с расширением .zip
. Затем я попытался разархивировать файл с помощью ZipArchive
, но получил следующую ошибку:
[SSZipArchive] Failed to open file on unzipping.(Error Domain=NSPOSIXErrorDomain Code=20 "Not a directory")
Я также сохранил файл с расширением .json
, затем разархивировал его, но получил ту же ошибку, что и выше.
Я загрузил сохраненный файл в контейнер и открыл его, и результаты перечислены ниже:
(1) Для файла .zip
: я не смог его открыть.
Can't decompressed xxx.json.zip to Documents.
(error -2: No similar file or directory)
(2) К .json
файлу: я получил искаженный текст вроде
∫ôFk;|T|D˚®è•Éjê‹¡Ò;X≈∞)˘–7ÑØZl≥MÇz-n·ù!ê}˜fflêÔæv\£F>RBZ1Myfª—Q˘∏àúˇá≥˙Ïèãd”
Здесь показан мой код.
func saveZipFile(filename: String, file: Data) {
let documentDirURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let fileURL = documentDirURL.appendingPathComponent("\(filename).zip")
print("File Path: \(fileURL.path)")
do {
try file.write(to: fileURL, options: .atomic)
try SSZipArchive.unzipFile(atPath: fileURL.path, toDestination: fileURL.path, overwrite: true, password: finalKey)
} catch let err {
print("Error: \(err.localizedDescription)")
}
}
Файл должен бытьчитаемый человеком файл json, если он правильно распакован.