首页 > 代码库 > 文件 I/O 基本操作
文件 I/O 基本操作
无论多么简单的应用程序都要涉及到状态的存储,这里主要罗列下iOS一些比较主要的IO操作。iOS的主要IO操作包括以下几种:NSData、NSMutableData控制文件缓冲流;NSFileManager管理文件及文件的目录,包括文件及文件夹的创建、移动、删除、复制等;NSFileHandle读取、修改文件的内容(不可以创建);NSURL读取网络资源;NSBundle读取项目内部的资源;NSProcessInfo读取进程的信息,同时还包括比较高级的知识点:对象归档。
一、NSData、NSMutableData,数据缓冲流。
NSData主要有两个功能:1.读取数据转成NSData缓冲流。2.将NSData缓冲流输出。
NSData的创建:
public init(bytes: UnsafePointer<Void>, length: Int) public init(bytesNoCopy bytes: UnsafeMutablePointer<Void>, length: Int) public init(bytesNoCopy bytes: UnsafeMutablePointer<Void>, length: Int, freeWhenDone b: Bool) @available(iOS 7.0, *) public init(bytesNoCopy bytes: UnsafeMutablePointer<Void>, length: Int, deallocator: ((UnsafeMutablePointer<Void>, Int) -> Void)?) public init(contentsOfFile path: String, options readOptionsMask: NSDataReadingOptions) throws public init(contentsOfURL url: NSURL, options readOptionsMask: NSDataReadingOptions) throws public init?(contentsOfFile path: String) public init?(contentsOfURL url: NSURL) public init(data: NSData)
NSData有两个属性,length和byte。
NSData的常用操作:
//获取NSData所包含的数据 public func getBytes(buffer: UnsafeMutablePointer<Void>) //获取NSData指定长度的数据 public func getBytes(buffer: UnsafeMutablePointer<Void>, length: Int) //获取NSData指定范围的数据 public func getBytes(buffer: UnsafeMutablePointer<Void>, range: NSRange) //获取NSData指定范围的数据所组成的NSData数据 public func subdataWithRange(range: NSRange) -> NSData //将NSData数据写入文件 public func writeToFile(path: String, atomically useAuxiliaryFile: Bool) -> Bool //将NSData数据写入网络文件 public func writeToURL(url: NSURL, atomically: Bool) -> Bool
二、NSFileManager,管理文件及文件夹
开发者可以通过NSFileManager对文件和文件夹进行创建、移动、删除和复制,在对文件和文件夹进行通用操作时可以通过实现代理(NSFileManagerDelegate)来确保文件操作的成功执行,并在成功执行后实现特定的操作。
NSFileManager以文件名多唯一标识,文件名可以是绝对路径或相对路径,不以斜线/开头的是相对路径,以斜线/开头的是绝对路径,~表示当前用户的Home目录,. 表示当前目录,..表示上级目录。
常用操作:
//判断该路径的文件是否存在 public func fileExistsAtPath(path: String) -> Bool //判断该路径的文件或目录是否存在,isDirectory用于传入是否是目录 public func fileExistsAtPath(path: String, isDirectory: UnsafeMutablePointer<ObjCBool>) -> Bool //判断该路径的文件是否可读 public func isReadableFileAtPath(path: String) -> Bool //判断该路径的文件是否可写 public func isWritableFileAtPath(path: String) -> Bool //判断该路径的文件是否可执行 public func isExecutableFileAtPath(path: String) -> Bool //判断该路径的文件是否删除 public func isDeletableFileAtPath(path: String) -> Bool //获取文件的内容 public func contentsAtPath(path: String) -> NSData? //创建文件 public func createFileAtPath(path: String, contents data: NSData?, attributes attr: [String : AnyObject]?) -> Bool //根据路径创建目录 public func createDirectoryAtPath(path: String, withIntermediateDirectories createIntermediates: Bool, attributes: [String : AnyObject]?) throws //根据URL创建目录 public func createDirectoryAtURL(url: NSURL, withIntermediateDirectories createIntermediates: Bool, attributes: [String : AnyObject]?) throws //根据路径删除文件或目录 public func removeItemAtPath(path: String) throws //根据URL删除文件或目录 public func removeItemAtURL(URL: NSURL) throws //根据路径删除文件或目录 public func copyItemAtPath(srcPath: String, toPath dstPath: String) throws //根据URL复制文件或目录 public func copyItemAtURL(srcURL: NSURL, toURL dstURL: NSURL) throws //根据路径移动文件或目录 public func moveItemAtPath(srcPath: String, toPath dstPath: String) throws //根据URL移动文件或目录 public func moveItemAtURL(srcURL: NSURL, toURL dstURL: NSURL) throws
三、NSProcessInfo,获取应用程序进程信息
通过NSProcessInfo可以获取app在运行过程中的进程信息。通过调用NSProcessInfo的类方法
processInfo()获得NSProcessInfo实例。
主要属性:
//运行时所有环境的变量名和值 public var environment: [String : String] { get } //运行时所传入的参数组成的数组 public var arguments: [String] { get } //运行的系统的主机名 public var hostName: String { get } //进程名 public var processName: String //进程Id public var processIdentifier: Int32 { get } //返回一个全局的、唯一的字符串 public var globallyUniqueString: String { get } //操作系统版本号 public var operatingSystemVersionString: String { get } //操作系统版本 public var operatingSystemVersion: NSOperatingSystemVersion { get } //处理器数量 public var processorCount: Int { get } //激活的处理器数量 public var activeProcessorCount: Int { get } //物理内存 public var physicalMemory: UInt64 { get } //系统运行的时间 public var systemUptime: NSTimeInterval { get }
文件 I/O 基本操作