투케이2K

416. (ios/swift5) [유틸 파일] get_File_Url : 앱 파일 저장소 특정 파일 경로 PATH URL 확인 본문

IOS

416. (ios/swift5) [유틸 파일] get_File_Url : 앱 파일 저장소 특정 파일 경로 PATH URL 확인

투케이2K 2024. 3. 9. 11:04

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // MARK: - [앱 파일 저장소 특정 파일 경로 PATH URL 확인]
    // -----------------------------------------------------------------------------------------
    func get_File_Url(folderName: String, fileName: String) -> URL? {
        
        /*
        // -----------------------------------------
        [get_File_Url 메소드 설명]
        // -----------------------------------------
        1. 앱 파일 저장소 특정 파일 존재 여부 확인
        // -----------------------------------------
        2. 호출 방법 :
         
         C_App().get_File_Url(folderName: "TEST_FOLDER", fileName: "TWOK.txt")
         C_App().get_File_Url(folderName: S_FinalData.HC_APP_LOG_FOLDER_NAME, fileName: S_FinalData.HC_APP_USE_FILE_NAME)
        // -----------------------------------------
        3. 리턴 예시 :
         file:///var/mobile/Containers/Data/Application/106C..AAA1/Documents/LOG_FILE_FOLDER/TEST.txt
        // -----------------------------------------
        4. 참고 info plist 설정 :
         
         아이폰 파일 접근 설정 : Supports opening documents in place : YES
         아이튠즈 공유 설정 : Application supports iTunes file sharing : YES
        // -----------------------------------------
        */

        
        // [변수 선언]
        var returnData: URL? = nil
        var M_LOG = ""
        var filePaths = ""


        // [로직 처리 실시]
        let fileManager = FileManager.default // 파일 매니저 선언
        let documentsUrl =  fileManager.urls(for: .documentDirectory, in: .userDomainMask).first // 기본 경로 확인
        
        if documentsUrl != nil && C_Util().stringNotNull(str: fileName) == true {
            
            if C_Util().stringNotNull(str: documentsUrl?.description ?? "") == true {
                
                if C_Util().stringNotNull(str: folderName) == true { // [폴더 명칭이 널이 아닌 경우]
                    
                    filePaths = documentsUrl?.appendingPathComponent(folderName).path ?? ""
                    
                    if (filePaths.hasSuffix("/") == true){
                        filePaths = filePaths + fileName
                    }
                    else {
                        filePaths = filePaths + "/" + fileName
                    }
                    
                    if FileManager.default.fileExists(atPath: filePaths) == true { // [저장 된 경로 있음]
                        
                        if filePaths.hasPrefix("file") == false {
                            filePaths = "file://" + filePaths
                        }
                        
                        returnData = URL(string: filePaths)
                        
                        M_LOG = "[Success] :: [Input - Folder] :: File Exists"
                        
                    }
                    else { // [저장 된 경로 없음]
                        M_LOG = "[ERROR] :: [Input - Folder] :: File Not Exists"
                    }
                    
                }
                else { // [폴더 명칭 없음 >> document 에 저장]
                    
                    filePaths = documentsUrl?.path ?? ""
                    
                    if (filePaths.hasSuffix("/") == true){
                        filePaths = filePaths + fileName
                    }
                    else {
                        filePaths = filePaths + "/" + fileName
                    }
                    
                    // [기본 경로에 특정 파일 존재 확인]
                    if FileManager.default.fileExists(atPath: filePaths) == true { // [저장 된 경로 있음]
                        
                        if filePaths.hasPrefix("file") == false {
                            filePaths = "file://" + filePaths
                        }
                        
                        returnData = URL(string: filePaths)
                        
                        M_LOG = "[Success] :: [Input - Defalt] :: File Exists"
                        
                    }
                    else { // [저장 된 경로 없음]
                        M_LOG = "[ERROR] :: [Input - Defalt] :: File Not Exists"
                    }
                    
                }
                
            }
            else {
                M_LOG = "[ERROR] :: documentsUrl Is Null"
            }
            
        }
        else {
            M_LOG = "[ERROR] :: documentDirectory And File Name Is Null And Date Format Is Null"
        }

        
        // [로그 출력 실시]
        S_Log._D_(description: "앱 파일 저장소 특정 파일 경로 PATH URL 확인", data: [
            "INPUT [folderName] :: \(folderName)",
            "INPUT [fileName] :: \(fileName)",
            "M_LOG :: \(M_LOG)",
            "RETURN :: \(String(describing: returnData))"
        ])
        
        
        // [리턴 변수 선언]
        return returnData
        
    }
 

[결과 출력]


반응형
Comments