๐ FileManager+ext
๐ ๅ่๏ผSwift Playgrounds โฉ Image Gallery (Data Model: Gathering Image URLs)
import Foundation
extension FileManager {
/// Copies the specified file URL to a file with the same name in the document directory.
/// - parameter url: The file URL to be copied.
/// - returns: The URL of the copied or existing file in the documents directory, or nil if the copy failed.
func copyItemToDocumentDirectory(from sourceURL: URL) -> URL? {
guard let documentDirectory = documentDirectory else { return nil }
let fileName = sourceURL.lastPathComponent
let destinationURL = documentDirectory.appendingPathComponent(fileName)
if self.fileExists(atPath: destinationURL.path) {
return destinationURL
} else {
do {
try self.copyItem(at: sourceURL, to: destinationURL)
return destinationURL
} catch let error {
print("Unable to copy file: \(error.localizedDescription)")
}
}
return nil
}
/// Removes an item with the specified file URL from the document directory, if present.
/// - parameter url: The file URL to be removed.
func removeItemFromDocumentDirectory(url: URL) {
guard let documentDirectory = documentDirectory else { return }
let fileName = url.lastPathComponent
let fileUrl = documentDirectory.appendingPathComponent(fileName)
if self.fileExists(atPath: fileUrl.path) {
do {
try self.removeItem(at: url)
} catch let error {
print("Unable to remove file: \(error.localizedDescription)")
}
}
}
/// Returns the contents of the specified directory as an array of URLs.
func getContentsOfDirectory(_ url: URL) -> [URL] {
var isDirectory: ObjCBool = false
// The URL must be a directory.
guard FileManager.default.fileExists(atPath: url.path, isDirectory: &isDirectory), isDirectory.boolValue else { return [] }
do {
return try FileManager.default.contentsOfDirectory(at: url, includingPropertiesForKeys: nil)
} catch let error {
print("Unable to get directory contents: \(error.localizedDescription)")
}
return []
}
}
Foundation โฉ File System โฉ FileManager โฉ
urls(for:in:) - array of URLs for specified directory in requested domains.
Last updated