首页 > 代码库 > 文件 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 基本操作