파일을 이동하거나 복사하는 경우 대용량 파일이라면 시간이 걸릴 수 있습니다. 사용자에게 파일 이동이나 복사가 진행 중임을 알려주는 것은 좋은 사용자 경험을 제공합니다. 이번 블로그에서는 Swift에서 파일 이동 및 복사 시 진행률을 표시하는 방법에 대해 알아보겠습니다.
기능 개요
파일 이동이나 복사 작업을 수행할 때 사용자에게 작업이 진행 중임을 알려주기 위해 진행률을 표시하는 것이 좋습니다. FileManager
클래스를 사용하여 파일을 이동하거나 복사할 때 해당 작업에 대한 진행률을 측정하고 사용자에게 시각적으로 표시할 수 있습니다.
진행률 표시 방법
FileManager
클래스의 copyItem(at:to:)
및 moveItem(at:to:)
메서드를 사용하여 파일 이동이나 복사 작업을 수행할 때, 해당 메서드가 실제로 작업을 수행하는 동안 파일의 크기와 실제로 복사되거나 이동된 크기를 비교하여 진행률을 계산할 수 있습니다.
아래는 파일 복사 시 진행률을 표시하는 Swift 코드의 예시입니다.
import Foundation
func copyFileWithProgress(from sourceURL: URL, to destinationURL: URL, progressHandler: @escaping (Float) -> Void, completion: @escaping (Error?) -> Void) {
let fileSize: UInt64
do {
// 복사할 파일의 크기를 가져옴
let attr = try FileManager.default.attributesOfItem(atPath: sourceURL.path)
fileSize = attr[.size] as! UInt64
} catch {
completion(error)
return
}
do {
// 파일 복사 작업 수행
let input = try FileHandle(forReadingFrom: sourceURL)
defer {
input.closeFile()
}
let output = FileHandle(forWritingAtPath: destinationURL.path)
defer {
output?.closeFile()
}
var totalBytesWritten: UInt64 = 0
while true {
let buffer = input.readData(ofLength: 4096)
if buffer.count == 0 {
// 파일 복사 작업 완료
completion(nil)
break
}
output?.write(buffer)
totalBytesWritten += UInt64(buffer.count)
// 진행률 업데이트
let progress = Float(totalBytesWritten) / Float(fileSize)
progressHandler(progress)
}
} catch {
completion(error)
}
}
// 사용 예시
let sourceURL = URL(fileURLWithPath: "path_to_source_file")
let destinationURL = URL(fileURLWithPath: "path_to_destination_file")
copyFileWithProgress(from: sourceURL, to: destinationURL,
progressHandler: { progress in
// 진행률 업데이트를 통해 UI 업데이트
print("Progress: \(progress * 100)%")
},
completion: { error in
if let error = error {
// 복사 실패
print("Error: \(error)")
} else {
// 복사 성공
print("Copy completed")
}
})
위 예시 코드는 파일을 복사하면서 복사 진행률을 업데이트하는 방법을 보여줍니다. copyFileWithProgress
함수는 파일 복사 작업을 수행하면서 진행률을 업데이트하고, 완료 시에는 콜백을 호출하여 사용자에게 알리는 기능을 수행합니다.
이를 통해 Swift로 파일 이동이나 복사 시 진행률을 표시할 수 있으며, 사용자에게 작업이 진행 중임을 시각적으로 알리는 데 도움이 될 것입니다.
결론
이번 글에서는 Swift에서 파일 이동 및 복사 시 진행률을 표시하는 방법에 대해 알아보았습니다. 파일 작업 중에는 사용자에게 진행 상황을 알려주는 것이 중요하며, 이를 위해 위와 같이 진행률 표시를 구현할 수 있습니다. 사용자 경험을 향상시키기 위해 파일 작업 시 진행률을 적절히 표시하는 것이 좋습니다.