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)!)