let documentPaths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory,
FileManager.SearchPathDomainMask.userDomainMask, true)
let documnetPath = documentPaths[0]

3,Library目录 ./Library

这个目录下有两个子目录:Caches 和 Preferences
Library/Preferences目录,包含应用程序的偏好设置文件。不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好。
Library/Caches目录,主要存放缓存文件,iTunes不会备份此目录,此目录下文件不会再应用退出时删除

Library目录-方法1

let libraryPaths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.libraryDirectory,
FileManager.SearchPathDomainMask.userDomainMask, true)
let libraryPath = libraryPaths[0]
print(libraryPath)

Cache目录-方法1

let cachePaths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory,
FileManager.SearchPathDomainMask.userDomainMask, true)
let cachePath = cachePaths[0]
print(cachePath)

Cache目录-方法2

let cachePath2 = NSHomeDirectory() + "/Library/Caches"
print(cachePath2)

4,tmp目录 ./tmp

用于存放临时文件,保存应用程序再次启动过程中不需要的信息,重启后清空。

let tmpDir = NSTemporaryDirectory()
print(tmpDir)
let tmpDir2 = NSHomeDirectory() + "/tmp"
print(tmpDir2)

5,程序打包安装的目录 NSBundle.mainBundle()

工程打包安装后会在NSBundle.mainBundle()路径下,该路径是只读的,不允许修改。所以当我们工程中有一个SQLite数据库要使用,在程序启动时,我们可以把该路径下的数据库拷贝一份到Documents路径下,以后整个工程都将操作Documents路径下的数据库。

        //声明一个Documents下的路径
        var dbPath = NSHomeDirectory() + "/Documents/hanggeDB.sqlite"
        print(dbPath)
        //判断数据库文件是否存在
        if !FileManager.default.fileExists(atPath: dbPath){
            //获取安装包内数据库路径
            let bundleDBPath:String = Bundle.main.path(forResource: "hanggeDB", ofType: "sqlite")!
            //将安装包内数据库拷贝到Documents目录下
            let bundleDBPathURL:URL = URL.init(string: "file://" + bundleDBPath)!
            try! FileManager.default.copyItem(at: bundleDBPathURL, to: URL.init(string: "file://" + dbPath)!)