常用的管理沙盒文件的方法总结如下:
//获取Document路径
class func getDocumentPath() -> String{
let filePaths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
return filePaths.first!+"/"
}
//获取文件夹下文件列表
class func getFileListInFolderWithPath(path:String) -> Array<String>{
let fileManager = FileManager.default
let fileList = try! fileManager.contentsOfDirectory(atPath: path)
return fileList
}
//获取Documents目录下的所有文件
class func getDomcumentAllFolder() ->Array<String>{
let paths = self.getDocumentPath()
let fileManager = FileManager.default
let fileList = try! fileManager.contentsOfDirectory(atPath: paths)
var isDir:ObjCBool = false
var dirArray = Array<String>()
for fileName in fileList {
let path = paths+fileName
if fileManager.fileExists(atPath: path, isDirectory: &isDir) {
if !isDir.boolValue {
dirArray.append(fileName)
}
}
}
return dirArray
}
//查看文件夹是否存在
class func isJudgeFileOrFolderExists(folderName: String) -> Bool{
let fileManager = FileManager.default
let exist = fileManager.fileExists(atPath: folderName)
if (exist) {
return true
}else{
return false
}
}
//删除目录下的所有文件
class func createFolderInDocumentObjects(fileName:String) ->Bool{
if fileName != ""{
let paths = self.getDocumentPath()
let userDirectory = paths+fileName
let fileManager = FileManager.default
if(!fileManager.fileExists(atPath: userDirectory)){
try! fileManager.createDirectory(atPath: userDirectory, withIntermediateDirectories: false, attributes: nil)
return true
}
}
return false
}
//移除文件
class func removefile(folderName: String){
if folderName == ""{
return
}
let fileManager = FileManager.default
try! fileManager.removeItem(atPath: folderName)
}
//移除文件夹下所有文件
class func deleteFileAtPath(folderName: String){
let paths = self.getDocumentPath()
let folderDirectory = paths+folderName
let fileManager = FileManager.default
let enmerator = fileManager.enumerator(atPath: folderDirectory)
for fileName in enmerator! {
let filePath = folderDirectory.appendingFormat("\(fileName)")
try! fileManager.removeItem(atPath: filePath)
}
}
//获取文件创建时间
class func getFileCreateTime(filePath:String)->String {
let fileManager = FileManager.default
let attributes = try! fileManager.attributesOfItem(atPath: filePath)
return String(describing: attributes[FileAttributeKey.creationDate]!)
}
//获取文件大小
class func getFileSize(folderPath: String)-> String{
if folderPath.count == 0 {
return "0MB" as String
}
let manager = FileManager.default
if !manager.fileExists(atPath: folderPath){
return "0MB" as String
}
var fileSize:Float = 0.0
do {
let files = try manager.contentsOfDirectory(atPath: folderPath)
for file in files {
let path = folderPath + file
fileSize = fileSize + fileSizeAtPath(filePath: path)
}
}catch{
fileSize = fileSize + fileSizeAtPath(filePath: folderPath)
}
var resultSize = ""
if fileSize >= 1024.0*1024.0{
resultSize = NSString(format: "%.2fMB", fileSize/(1024.0 * 1024.0)) as String
}else if fileSize >= 1024.0{
resultSize = NSString(format: "%.fkb", fileSize/(1024.0 )) as String
}else{
resultSize = NSString(format: "%llub", fileSize) as String
}
return resultSize
}
/** 计算单个文件或文件夹的大小 */
class func fileSizeAtPath(filePath:String) -> Float {
let manager = FileManager.default
var fileSize:Float = 0.0
if manager.fileExists(atPath: filePath) {
do {
let attributes = try manager.attributesOfItem(atPath: filePath)
if attributes.count != 0 {
fileSize = attributes[FileAttributeKey.size]! as! Float
}
}catch{
}
}
return fileSize;
}