2017.5.14沙盒、简单读写操作

一、沙盒:每一个应用程序都有一个沙盒,只能在自己的沙盒中进行文件访问,iOS8以后开放了部分文件

1、沙盒目录结构:

NSSearchPathForDirectoriesInDomains(获取)介绍:http://blog.csdn.net/xingxing513234072/article/details/24184917

      documents(用于存储用户数据,iTunes备份和恢复的时候会包括此目录,所以,苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下。)(数据持久化保存)

//获取document的路径:

       let documents = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)

print(documents[0])

print("11"+NSHomeDirectory())

      library(包含两个子目录:Caches 和 Preferences。Caches用来存放用户需要换成的文件。Preferences是APP的偏好设置,可以通过NSUserDefaults来读取和设置。)(缓存文件,应用退出不会自动删除)

//获取library的路径:

let lib = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true)

print("lib = " + lib[0])

let caches = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)

print("caches = " + caches[0])

//prefer 不可以直接获取

let prefer = lib[0] + "/Preferences"

print("prefer = " + prefer)

      tmp(存储临时文件,应用退出会自动删除)

//获取temp目录 获取到沙盒根目录(NSHomeDirectory) 再拼接temp目录

let temp = NSHomeDirectory() + "/tmp"

print("tmp = " + temp)

2、打开沙盒模拟器的方法:

      直接在Finder->前往->前往文件夹,输入上面的内容即可:/Users/140xiangwenjing/Library/Developer/CoreSimulator/Devices/27D1ABAB-8FD8-4AEB-ACF5-968100682C81/data/Containers/Data/Application/5767F33A-EF32-45EB-BBB1-20F27DD1AE63/tmp

通过Finder一步步查找

    模拟器上的APP的沙盒实在用户目录下的资源库里面,但是资源库是隐藏文件夹。所以查看沙盒之前,现将隐藏文件夹显示出来。

显示隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true

隐藏隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false


注意:大文件不能在iTunes同步的文件夹中(上线被拒绝)

二、简单读写操作:http://www.jianshu.com/p/0471b2d0fe2c

String、Data、Array、Directory

FileManager :文件管理类(单例)

//单例(创建对象文件是一样的)

//获取当前应用程序 UIApplication.shared.keyWindow(获取主平面)    UserDefaults.standard  单例在程序运行期间不会被释放

(encoding编码格式:encoding:.utf8)

注意:单例在程序运行期间不会被释放,一般用于资源共享

//1、创建文件夹

//2、移动文件夹/重命名(判断是凑存在文件夹在移动,先执行4)

//3、删除

//4、是否存在

FileHandle(文件句柄)

Write...文件追加

Read...读取某一部分


3、复杂对象写入:http://www.jianshu.com/p/0471b2d0fe2c

//1、遵守NSCoding协议,实现两个方法()

//2、现创建对象

//3、创建一个NSMutableData

//4、根据NSMutableData创建Acr对象(归档工具)

//5、Acr对象encoding方法

//6、写入data对象

你可能感兴趣的:(2017.5.14沙盒、简单读写操作)