/**
* 创建文件夹主目录
*/
@discardableResult
func createMainDirectory(dirName: String) -> URL? {
let path: URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let historyURL = path.appendingPathComponent(dirName)
return createSubDir(pathURL: historyURL)
}
/**
* 创建文件夹下的子目录
*/
@discardableResult
func createSubDir(pathURL: URL?) -> URL? {
guard let pathURL = pathURL else { return nil }
do {
try FileManager.default.createDirectory(at: pathURL,
withIntermediateDirectories: true,
attributes: nil)
print("\(pathURL) 创建成功")
return pathURL
} catch {
print("\(pathURL) 创建失败")
return nil
}
}
/**
* 查找到对应名字的文件夹
*/
@discardableResult
func findSpecificDir(dName: String?, mainDir: URL?) -> URL? {
guard let dName = dName else { return nil }
guard let mainDir = mainDir else { return nil }
do {
let subPaths: [URL] = try FileManager.default.contentsOfDirectory(at: mainDir, includingPropertiesForKeys: nil, options: .skipsHiddenFiles)
let fileterPaths = subPaths.filter { url in
return url.absoluteString.hasSuffix(dName+"/")
}
guard let specificDir = fileterPaths.first else { return nil }
print("已找到: \(specificDir)")
return specificDir
} catch {
print("error 没有找到该\(mainDir)下的子文件夹")
return nil
}
}
/**
* 在对应的文件夹下写入数据
*/
@discardableResult
func saveFileToDir(dir: URL?, fileName: String?, data: Data?) -> Bool {
guard let dir = dir, let fileName = fileName, let data = data else { return false }
let filePath = dir.appendingPathComponent(fileName).absoluteURL
do {
try data.write(to: filePath)
print("数据写入成功 \(filePath.absoluteString)")
return true
} catch {
print("数据写入失败 \(filePath.absoluteString)")
return false
}
}
/**
* 获取到对应文件夹下的所有文件夹
*/
@discardableResult
func getDirsFromDir(dir: URL?) -> [URL]? {
guard let dir = dir else { return nil}
do {
let subPaths: [URL] = try FileManager.default.contentsOfDirectory(at: dir, includingPropertiesForKeys: nil, options: .skipsHiddenFiles)
let filterSubPaths = subPaths.filter { sub in
return sub.isFileURL
}
print("已找到所有文件夹: \(filterSubPaths)")
return filterSubPaths
} catch {
print("error 没有找到该\(dir)下的子文件夹")
return nil
}
}
/**
* 获取到对应文件夹下的所有的文件夹的名字
*/
@discardableResult
func getDirNamesFromDir(dir: URL?) -> [String]? {
let urls = getDirsFromDir(dir: dir)
let names = urls?.map { url in
url.lastPathComponent
}
guard let gNames = names else { return nil }
print(gNames)
return gNames
}
/**
* 获取到指定文件夹下的所有文件
*/
@discardableResult
func getFilesFromSpecificDir(dir: URL?) -> [URL]? {
guard let specDir = dir else { return nil }
do {
let urls = try FileManager.default.contentsOfDirectory(at: specDir, includingPropertiesForKeys: nil, options: .skipsHiddenFiles)
let fileterUrls = urls.filter { url in
return url.isFileURL
}
print("获取到指定文件夹下的所有文件 成功: \(fileterUrls)")
return fileterUrls
} catch {
print("获取到指定文件夹下的所有文件 失败")
return nil
}
}
/**
* 删除指定的文件夹
*/
@discardableResult
func removeDir(dir: URL?) -> Bool {
guard let dir = dir else { return false }
do {
try FileManager.default.removeItem(at: dir)
print("删除 \(dir) 成功")
return true
} catch {
print("删除 \(dir) 失败")
return false
}
}
网友评论