码迷,mamicode.com
首页 > 其他好文 > 详细

文件 I/O 基本操作

时间:2016-08-28 23:39:37      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:

  无论多么简单的应用程序都要涉及到状态的存储,这里主要罗列下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 基本操作

标签:

原文地址:http://www.cnblogs.com/perterbin/p/5816244.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!