39 lines
901 B
Swift
39 lines
901 B
Swift
|
import Foundation
|
||
|
|
||
|
extension URL {
|
||
|
|
||
|
func ensureParentFolderExistence() throws {
|
||
|
try deletingLastPathComponent().ensureFolderExistence()
|
||
|
}
|
||
|
|
||
|
func ensureFolderExistence() throws {
|
||
|
guard !exists else {
|
||
|
return
|
||
|
}
|
||
|
try FileManager.default.createDirectory(at: self, withIntermediateDirectories: true)
|
||
|
}
|
||
|
|
||
|
var isDirectory: Bool {
|
||
|
(try? resourceValues(forKeys: [.isDirectoryKey]))?.isDirectory == true
|
||
|
}
|
||
|
|
||
|
var exists: Bool {
|
||
|
FileManager.default.fileExists(atPath: path)
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
Delete the file at the url.
|
||
|
*/
|
||
|
func delete() throws {
|
||
|
try FileManager.default.removeItem(at: self)
|
||
|
}
|
||
|
|
||
|
func copy(to url: URL) throws {
|
||
|
if url.exists {
|
||
|
try url.delete()
|
||
|
}
|
||
|
try url.ensureParentFolderExistence()
|
||
|
try FileManager.default.copyItem(at: self, to: url)
|
||
|
}
|
||
|
}
|