问题1:微信分享来的apk文件后缀会改为apk.1
例:
file:///private/var/mobile/Containers/Data/Application/190C4CCD-63E4-5EEB-B70F-55C565F09A64/Documents/Inbox/xxx.apk.1
解决方式:创建一个以apk结尾的同名文件,将分享来的数据写入到新文件内进行后续处理。
问题2:微信分享来数据会被存储,导致占用内存越来越高。
每次使用完后删除掉原文件。
结合上面两个问题,代码示例:
将类似:文件名.apk.1 , 文件名.apk-1.1,文件名.apk-10.1,这类结尾的路径改后缀名为.apk
func convertExtension(for path: String) -> String {
let pattern = "(\\.apk)(-|\\.)[0-9]+(\\.[0-9]+)?$"
let replacement = ".apk"
let newPath = path.replacingOccurrences(of: pattern, with: replacement, options: .regularExpression)
return newPath
}
//openUrl为分享进来的路径
let document = UIDocument.init(fileURL: url)
var newUrl = openUrl.deleteLastPathComponent()
let endStr = convertExtension(for: document.fileURL.lastPathComponent)
newUrl = newUrl.appendingPathComponent(endStr)
let fileManager = FileManager.default
do{
try fileManager.copyItem(at: url, to: newUrl)
}catch{
print("外部文件点击error2")
return false
}
do{
try fileManager.removeItem(at: openUrl)
}catch{
print("删除缓存文件")
return false
}
//后续以newUrl来进行后面的操作