투케이2K

534. (ios/swift5) [ZIPFoundation] 특정 디렉토리 폴더 text 텍스트 파일을 zip 파일로 압축 수행 - archive.zip 본문

IOS

534. (ios/swift5) [ZIPFoundation] 특정 디렉토리 폴더 text 텍스트 파일을 zip 파일로 압축 수행 - archive.zip

투케이2K 2024. 8. 4. 16:02
반응형

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[사전) txt 파일 생성 필요]

 
 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // MARK: - [테스트 메인 함수 정의 실시]
    // -----------------------------------------------------------------------------------------
    func testMain() {
        S_Log._D_(description: "테스트 함수 시작 실시", data: nil)
        
        
        /*
        // -------------------------------------------------------
        [요약 설명]
        // -------------------------------------------------------
        1. 필요 info plist 설정
         
         아이폰 파일 접근 설정 : Supports opening documents in place : YES
         아이튠즈 공유 설정 : Application supports iTunes file sharing : YES
        // -------------------------------------------------------
        2. 필요 import : import ZIPFoundation
        // -------------------------------------------------------
        3. Git 소스 참고 사이트 :
         
         https://github.com/weichsel/ZIPFoundation
        // -------------------------------------------------------
        4. 라이브러리 설치 참고 사이트 :
         
         https://blog.naver.com/kkh0977/223536057049
        // -------------------------------------------------------
        5. 사전) 텍스트 파일 생성 참고 사이트 :
         
         https://blog.naver.com/kkh0977/223287385462?trackingCode=blog_bloghome_searchlist
        // -------------------------------------------------------
        */
        
        
        // [로직 처리 실시]
        DispatchQueue.main.async {
            
            // [파일 경로 확인 변수 생성]
            var fileOriginPath = ""
            var fileZipPath = ""
            
            var fileName = "file.txt"
            var zipName = "archive.zip"
            
            
            // [파일 매니저 생성]
            let fileManager = FileManager.default // 파일 매니저 선언
            let documentsUrl =  fileManager.urls(for: .documentDirectory, in: .userDomainMask).first // 기본 경로 확인
            
            fileOriginPath = documentsUrl?.path ?? ""
            fileZipPath = documentsUrl?.path ?? ""
            
            if (fileOriginPath.hasSuffix("/") == true){ // [원본 텍스트 파일 경로]
                fileOriginPath = fileOriginPath + fileName
            }
            else {
                fileOriginPath = fileOriginPath + "/" + fileName
            }
            
            if (fileZipPath.hasSuffix("/") == true){ // [생성할 zip 파일 경로]
                fileZipPath = fileZipPath + zipName
            }
            else {
                fileZipPath = fileZipPath + "/" + zipName
            }
            
            S_Log._D_(description: "FILE_URL", data: [
                "TXT_URL :: " + fileOriginPath,
                "ZIP_URL :: " + fileZipPath,
            ])
            
            
            // [Zip 파일 생성 수행]
            do {
                let fileManagers = FileManager()
                try fileManagers.zipItem(at: URL(fileURLWithPath: fileOriginPath), to: URL(fileURLWithPath: fileZipPath))
            } catch {
                S_Log._D_(description: "Zip 파일 생성 에러 발생", data: ["error : \(error)"])
            }
            
        }

    }
 

[결과 출력]

 

반응형
Comments