本文将演示如何获取程序沙箱结构中,常见的几个目录。
在项目导航区,打开视图控制器的代码文件【ViewController.swift】
1 import UIKit 2 3 class ViewController: UIViewController { 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 // Do any additional setup after loading the view, typically from a nib. 8 9 //获得应用程序的路径, 10 //包含三个文件夹:1.文档目录 2.库目录 3.临时目录 4.以及一个程序包 11 //该目录就是应用程序的沙盒,程序只能访问该目录下的内容。 12 let homePath = NSHomeDirectory() 13 //在控制台打印输出程序包主目录的路径 14 print("homePath:\(homePath)") 15 16 //系统会为每个程序,生成一个私有目录,并随机生成一个数字字母串作为目录名。 17 //在每次程序启动时,这个目录名称都是不同的。 18 //而使用此方法,则可以i获得对应的目录集合。 19 let documentPaths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, 20 FileManager.SearchPathDomainMask.userDomainMask, 21 true) 22 //获得并输出目录集合中的第一个元素,即沙箱中的文档目录。 23 //应该将应用程序的所有数据文件,写入到这个目录下。 24 //这个目录通常用于存储用户数据。 25 print("documentPath1:\(documentPaths[0])") 26 //创建一个字符串对象,该字符串对象同样表示沙箱中的文档目录 27 let documentPath2 = NSHomeDirectory() + "/Documents" 28 //在控制台打印输出该目录,并与上一条日志比较是否相同 29 print("documentPath2:\(documentPath2)") 30 31 //使用相同的方式,获得沙箱下的库目录。 32 //这个目录下,包含两个子目录:1.缓存目录 2.参数目录 33 let libraryPaths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.libraryDirectory, 34 FileManager.SearchPathDomainMask.userDomainMask, 35 true) 36 //在控制台打印输出库目录 37 print("libraryPath1:\(libraryPaths[0])") 38 //创建一个字符串对象,该字符串对象同样表示沙箱中的库目录 39 let libraryPath2 = NSHomeDirectory() + "/Library" 40 //在控制台打印输出该目录,并与上一条日志比较是否相同 41 print("libraryPath2:\(libraryPath2)") 42 43 //使用相同的方式,获得沙箱下的缓存目录。 44 let cachePaths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, 45 FileManager.SearchPathDomainMask.userDomainMask, 46 true) 47 //获得并在控制台打印输出缓存目录, 48 //该目录用于存放应用程序专用的支持文件, 49 //保存应用程序再次启动过程中,需要的信息 50 print("cachePath1:\(cachePaths[0])") 51 //创建一个字符串对象,该字符串对象同样表示沙箱中的缓存目录, 52 let cachePath2 = NSHomeDirectory() + "/Library/Caches" 53 //在控制台打印输出该目录,并与上一条日志比较是否相同 54 print("cachePath2:\(cachePath2)") 55 56 //创建一个字符串对象,该字符串对象同样表示沙箱中的临时目录 57 let tmpPath1 = NSTemporaryDirectory() 58 //在控制台打印输出沙箱目录的临时文件夹 59 print(tmpPath1) 60 61 //从沙箱的根目录,也可以定位到临时文件夹 62 let tmpPath2 = NSHomeDirectory() + "/tmp" 63 //在控制台打印输出沙箱目录的临时文件夹 64 //和上面输出的临时文件夹的日志进行比较 65 print(tmpPath2) 66 } 67 68 override func didReceiveMemoryWarning() { 69 super.didReceiveMemoryWarning() 70 // Dispose of any resources that can be recreated. 71 } 72 }