zoukankan      html  css  js  c++  java
  • Swift3 文件操作常用方法汇总

    基于swift3的一些常用文件操作方法:

    1、创建文件(文件夹)

    2、读取文件(根据名称)

    3、读取文件(根据路径)

    4、判断文件是否存在(根据名称)

    5、判断文件是否存在(根据路径)

    6、删除指定名称文件

    7、删除指定路径文件

    8、删除所有文件

    9、写入文件

    代码:

    //第一层文件夹名称
    let CACHEPATH = "K12Cache"
    
    //内层文件夹名称
    let MarkingPath = "K12Cache/Marking/"
    class CacheUtils{
    
        //缓存路径(这里用的沙盒cache文件,非document,可根据需求更改)
        class func getCachePath()->String{
            var cacheDir = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, .userDomainMask, true).first!
            if(!cacheDir.hasSuffix("/")){
                cacheDir += "/"
            }
            cacheDir += CACHEPATH + "/"
            return cacheDir
        }
        
        //获得NSFileManager
        class func getFileManager()->FileManager{
            return FileManager.default
        }
        
        //判断文件夹是否存在
        class func dirExists(dir:String)->Bool{
            return getFileManager().fileExists(atPath: dir)
        }
        
        //判断文件是否存在
        class func fileExists(path:String)->Bool{
            return dirExists(dir: path)
        }
        
        //判断是否存在,存在则返回文件路径,不存在则返回nil
        class func fileExistsWithFileName(fileName:String)->String?{
            let dir = getCachePath()
            if(!dirExists(dir: dir)){
                return nil
            }
            let filePath = dir + fileName
            
            return fileExists(path: filePath) ? filePath : nil
        }
        
        
        //创建文件夹
        class func createDir(dir:String)->Bool{
            let fileManager = getFileManager()
            do{
                try fileManager.createDirectory(at: NSURL(fileURLWithPath: dir, isDirectory: true) as URL, withIntermediateDirectories: true, attributes: nil)
            }catch{
                return false
            }
            return true
        }
        
        /// 根据文件名创建路径
        ///
        /// - Parameter fileName: <#fileName description#>
        /// - Returns: <#return value description#>
        class func createFilePath(fileName:String)->String?{
            let dir = getCachePath()
            if(!dirExists(dir: dir) && !createDir(dir: dir)){
                return nil
            }
            let filePath = dir + fileName
            if(fileExists(path: filePath)){
                do{
                    try getFileManager().removeItem(atPath: filePath)
                }catch{
                    return nil
                }
                
            }
            return filePath
        }
        
        
        /// 删除文件 - 根据文件名称
        ///
        /// - Parameter fileName: <#fileName description#>
        /// - Returns: <#return value description#>
        class func deleteFileWithName(fileName:String)->Bool{
            guard let filePath = fileExistsWithFileName(fileName: fileName) else{
                return true
            }
            return deleteFile(path: filePath)
        }
        
        
        /// 删除文件 - 根据文件路径
        ///
        /// - Parameter path: <#path description#>
        /// - Returns: <#return value description#>
        class func deleteFile(path:String)->Bool{
            if(!fileExists(path: path)){
                return true
            }
            let fileManager = getFileManager()
            do{
                try fileManager.removeItem(atPath: path)
            }catch{
                return false
            }
            
            return true
        }
        
        /**
         清除所有的缓存
         
         - returns: Bool
         */
        class func deleteAll()->Bool{
            let dir = getCachePath()
            
            if !dirExists(dir: dir){
                return true
            }
            let manager = getFileManager()
            do{
                try manager.removeItem(atPath: dir)
            }catch{
                return false
            }
            return true
        }
        
        //读取文件 -(根据路径)
        class func readFileFromCache(path:String)->NSData?{
            var result:NSData?
            do{
                result = try NSData(contentsOfFile: path, options: NSData.ReadingOptions.uncached)
            }catch{
                return nil
            }
            return result
        }
        
        //读取文件 -(根据文件名)
        class func readFile(fileName:String)->NSData?{
            
            guard let filePath = fileExistsWithFileName(fileName: fileName) else{
                return nil
            }
            
            return readFileFromCache(path: filePath)
        }
        
    
        
        /// 写文件
        ///
        /// - Parameters:
        ///   - fileName: 文件名称
        ///   - data: 数据data
        /// - Returns: <#return value description#>
        class func writeFile(fileName:String,data:NSData)->Bool{
            
            guard let filePath = createFilePath(fileName: fileName) else{
                return false
            }
            
            return data.write(toFile: filePath, atomically: true)
        }
        
    }
  • 相关阅读:
    Linux小技巧1:如何关闭Root用户SSH登陆
    PXE DHCP获取IP与传统DHCP获取IP地址的区别
    记录一次Tomcat内存泄露原因的追溯
    ZTE交换路由设备配置的备份与恢复
    启动oracle的步骤
    打开dbca,创建oracle数据库
    【转】ITPUB成员常去的几个站
    【mysql】常用命令总结
    【SQL Server】Count(*) vs Count(1) 区别
    表的设计和主键选择
  • 原文地址:https://www.cnblogs.com/yajunLi/p/6572679.html
Copyright © 2011-2022 走看看