Bundle可以说是在打包之后可以存储一些资源,有时候需要把bundle路径下的某些资源拷贝到Document中,方便文件的修改,以下是用到的一些方法
获取Bundle 的主路径
let path = Bundle.main.resourcePath ?? ""
获取Document路径
let docDir = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).last ?? ""
如果需要在改路径下新建子目录,只需要在后面拼接 "/xxxx" 即可
删除某路径文件或者文件夹
FileManager.default.removeItem(atPath: filePath)
判断文件或者文件夹是否存在
FileManager.default.fileExists(atPath: path)
判断是否是文件夹
var isDir:ObjCBool = ObjCBool(false)
FileManager.default.fileExists(atPath: tmp, isDirectory: &isDir)
isDir为true就是文件夹
复制文件或者文件夹,很简单,就一句话
FileManager.default .copyItem(atPath: path, toPath: filePath)
完整代码
let path = (Bundle.main.resourcePath ?? "") + "/myDir"
let docDir = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).last ?? ""
print("docDir = " + docDir)
let filePath = docDir + "/myDir"
if YS_DEBUG || UserDefaults.standard.integer(forKey: LUA_VERSION_KEY) < version {
try?FileManager.default.removeItem(atPath: filePath)
}
if !FileManager.default.fileExists(atPath: filePath, isDirectory: .none) {
try? FileManager.default .copyItem(atPath: path, toPath: filePath)
UserDefaults.standard.set(version, forKey: LUA_VERSION_KEY)
} else {
}
网友评论