Notice
Recent Posts
Recent Comments
Link
투케이2K
202. (swift5/xcode) [유틸 파일] fileCopy : 앱 파일 저장소에 저장된 파일 복사 - FileManager.default.copyItem 본문
Swift
202. (swift5/xcode) [유틸 파일] fileCopy : 앱 파일 저장소에 저장된 파일 복사 - FileManager.default.copyItem
투케이2K 2023. 12. 14. 19:40[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT5
[소스 코드]
// -----------------------------------------------------------------------------------------
// MARK: - [앱 파일 저장소에 저장된 파일 복사]
// -----------------------------------------------------------------------------------------
func fileCopy(originFolderName: String, originFileName: String, copyFolderName: String, copyFileName: String) -> Bool {
/*
// -----------------------------------------
[fileCopy 메소드 설명]
// -----------------------------------------
1. 앱 파일 저장소에 저장된 파일 복사
// -----------------------------------------
2. 호출 방법 :
C_App().fileCopy(originFolderName: S_FinalData.HC_APP_LOG_FOLDER_NAME, originFileName: S_FinalData.HC_APP_USE_FILE_NAME, copyFolderName: S_FinalData.HC_APP_LOG_FOLDER_NAME, copyFileName: "copy.txt")
// -----------------------------------------
4. 참고 info plist 설정 :
아이폰 파일 접근 설정 : Supports opening documents in place : YES
아이튠즈 공유 설정 : Application supports iTunes file sharing : YES
// -----------------------------------------
*/
// [변수 선언]
var returnData = false
var M_LOG = ""
var originFilePaths = ""
var copyFilePaths = ""
// [로직 처리 실시]
let fileManager = FileManager.default // 파일 매니저 선언
let documentsUrl = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first // 기본 경로 확인
if documentsUrl != nil
&& C_Util().stringNotNull(str: originFolderName) == true
&& C_Util().stringNotNull(str: originFileName) == true
&& C_Util().stringNotNull(str: copyFolderName) == true
&& C_Util().stringNotNull(str: copyFileName) == true {
if C_Util().stringNotNull(str: documentsUrl?.description ?? "") == true {
originFilePaths = documentsUrl?.appendingPathComponent(originFolderName).path ?? ""
if (originFilePaths.hasSuffix("/") == true){
originFilePaths = originFilePaths + originFileName
}
else {
originFilePaths = originFilePaths + "/" + originFileName
}
if FileManager.default.fileExists(atPath: originFilePaths) == true { // [저장 된 경로 있음]
copyFilePaths = documentsUrl?.appendingPathComponent(copyFolderName).path ?? ""
// [복사 저장소 확인]
if FileManager.default.fileExists(atPath: copyFilePaths) == false { // [저장 된 경로 없음 >> 폴더 생성 실시]
do {
// [디렉토리 생성 유무 확인]
try FileManager.default.createDirectory(atPath: copyFilePaths, withIntermediateDirectories: true, attributes: nil)
if (copyFilePaths.hasSuffix("/") == true){
copyFilePaths = copyFilePaths + copyFileName
}
else {
copyFilePaths = copyFilePaths + "/" + copyFileName
}
M_LOG = "[Copy Folder Create] :: "
try FileManager.default.copyItem(at: NSURL.fileURL(withPath: originFilePaths), to: NSURL.fileURL(withPath: copyFilePaths))
M_LOG += "[Success] :: Copy File"
returnData = true
} catch {
M_LOG = "[Exception] :: [1] :: \(error.localizedDescription)"
}
}
else { // [폴더 >> 있음]
M_LOG = "[Copy Folder Exists] :: "
if (copyFilePaths.hasSuffix("/") == true){
copyFilePaths = copyFilePaths + copyFileName
}
else {
copyFilePaths = copyFilePaths + "/" + copyFileName
}
do {
try FileManager.default.copyItem(at: NSURL.fileURL(withPath: originFilePaths), to: NSURL.fileURL(withPath: copyFilePaths))
M_LOG += "[Success] :: Copy File"
returnData = true
}
catch {
M_LOG = "[Exception] :: [2] :: \(error.localizedDescription)"
}
}
}
else { // [저장 된 경로 없음]
M_LOG = "[ERROR] :: Origin File Not Exists"
}
}
else {
M_LOG = "[ERROR] :: documentsUrl Is Null"
}
}
else {
M_LOG = "[ERROR] :: Input Data Is Null"
}
// [로그 출력 실시]
S_Log._D_(description: "앱 파일 저장소에 저장된 파일 복사", data: [
"INPUT [originFolderName] :: \(originFolderName)",
"INPUT [originFileName] :: \(originFileName)",
"INPUT [copyFolderName] :: \(copyFolderName)",
"INPUT [copyFileName] :: \(copyFileName)",
"originFilePaths :: \(originFilePaths)",
"copyFilePaths :: \(copyFilePaths)",
"M_LOG :: \(M_LOG)",
"RETURN :: \(returnData)"
])
// [리턴 변수 선언]
return returnData
}
[결과 출력]
반응형
'Swift' 카테고리의 다른 글
Comments