iOS采用沙盒机制, APP只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问
每个沙盒含有3个文件夹:Documents, Library 和 tmp;
其中Library包含Caches、Preferences目录.
- Documents:苹果建议将程序创建产生的文件以及应用浏览产生的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录;
- Library:存储程序的默认设置或其它状态信息;
- Library/Caches:存放缓存文件,保存应用的持久化数据,用于应用升级或者应用关闭后的数据保存,不会被itunes同步,所以为了减少同步的时间,可以考虑将一些比较大的文件而又不需要备份的文件放到这个目录下;
- Library/Preferences: 存放偏好设置文件;
- tmp:提供一个即时创建临时文件的地方,但不需要持久化,在应用关闭后,该目录下的数据将删除,也可能系统在程序不运行的时候清除。
目录
一、获取应用沙盒根路径
- (void)getHomeDirPath {
NSString *homeDirectory = NSHomeDirectory();
NSLog(@"%@",homeDirectory);
}
二、获取Documents目录路径
- (void)getDocumentsPath {
NSString *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
NSLog(@"%@",documentDirectory);
}
三、获取Library目录路径
- (void)getLibraryDirPath {
NSString *libraryDirectory = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject;
NSLog(@"%@",libraryDirectory);
}
四、获取Cache目录路径
- (void)getCachePath {
NSString *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject;
NSLog(@"%@",cachePath);
}
五、获取Tmp目录路径
- (void)gettmpPath {
NSString *tmpPath = NSTemporaryDirectory();
NSLog(@"%@",tmpPath);
}
六、创建文件夹
- (void)createDirectory {
NSString *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *testDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test"];
NSLog(@"%@",testDirectoryPath);
BOOL result = [fileManager createDirectoryAtPath:testDirectoryPath withIntermediateDirectories:YES attributes:nil error:nil];
if (result) {
NSLog(@"文件夹创建成功");
} else {
NSLog(@"文件夹创建失败");
}
}
七、创建文件
- (void)createFile {
NSString *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
NSString *testDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test"];
NSLog(@"%@",testDirectoryPath);
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *testPath = [testDirectoryPath stringByAppendingPathComponent:@"test.plist"];
BOOL result = [fileManager createFileAtPath:testPath contents:nil attributes:nil];
if (result) {
NSLog(@"文件创建成功");
} else {
NSLog(@"文件创建失败");
}
}
八、写数据到文件
- (void)writeDataToFile {
NSString *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
NSString *testDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test"];
NSLog(@"%@",testDirectoryPath);
NSString *testPath = [testDirectoryPath stringByAppendingPathComponent:@"test.txt"];
NSString *content = @"双十一快到了";
BOOL result = [content writeToFile:testPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
if (result) {
NSLog(@"数据写入成功");
} else {
NSLog(@"数据写入失败");
}
}
九、读文件数据
- (void)readDataFromFile {
NSString *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
NSString *testDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test"];
NSString *testPath = [testDirectoryPath stringByAppendingPathComponent:@"test.txt"];
NSString *content = [NSString stringWithContentsOfFile:testPath encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@",content);
}
十、读取文件属性
- (void)getFileAttributes {
NSString *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
NSString *testDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test"];
NSString *testPath = [testDirectoryPath stringByAppendingPathComponent:@"test.txt"];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:testPath error:nil];
NSLog(@"%@",fileAttributes);
}
十一、删除文件
- (void)deleteFile {
NSString *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
NSString *testDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test"];
NSLog(@"%@",testDirectoryPath);
NSString *testPath = [testDirectoryPath stringByAppendingPathComponent:@"test.txt"];
NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL result = [fileManager removeItemAtPath:testPath error:nil];
if (result) {
NSLog(@"数据删除成功");
} else {
NSLog(@"数据删除失败");
}
}
十二、移动文件
- (void)moveFile {
NSString *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
NSString *testDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test"];
NSLog(@"%@",testDirectoryPath);
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *testPath = [testDirectoryPath stringByAppendingPathComponent:@"test.plist"];
BOOL result = [fileManager createFileAtPath:testPath contents:nil attributes:nil];
if (result) {
NSLog(@"文件创建成功");
} else {
NSLog(@"文件创建失败");
}
NSString *content = @"双十一快到了";
BOOL writeResult = [content writeToFile:testPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
if (writeResult) {
NSLog(@"数据写入成功");
} else {
NSLog(@"数据写入失败");
}
NSString *otherDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test.txt"];
BOOL moveResult = [fileManager moveItemAtPath:testPath toPath:otherDirectoryPath error:nil];
if (moveResult) {
NSLog(@"文件移动成功");
} else {
NSLog(@"文件移动失败");
}
}
十三、复制文件
- (void)copyFile {
NSString *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
NSString *testDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test"];
NSLog(@"%@",testDirectoryPath);
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *testPath = [testDirectoryPath stringByAppendingPathComponent:@"test.txt"];
BOOL result = [fileManager createFileAtPath:testPath contents:nil attributes:nil];
if (result) {
NSLog(@"文件创建成功");
} else {
NSLog(@"文件创建失败");
}
NSString *content = @"双十一快到了";
BOOL writeResult = [content writeToFile:testPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
if (writeResult) {
NSLog(@"数据写入成功");
} else {
NSLog(@"数据写入失败");
}
NSString *otherDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test.txt"];
BOOL moveResult = [fileManager copyItemAtPath:testPath toPath:otherDirectoryPath error:nil];
if (moveResult) {
NSLog(@"文件复制成功");
} else {
NSLog(@"文件复制失败");
}
}
十四、计算文件大小
- (long long)fileSizeAtPath:(NSString *)path {
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:path]) {
long long size = [fileManager attributesOfItemAtPath:path error:nil].fileSize;
return size;
}
return 0;
}
十五、计算文件夹大小
- (long long)folderSizeAtPath:(NSString *)path {
NSFileManager *fileManager = [NSFileManager defaultManager];
long long folderSize = 0;
if ([fileManager fileExistsAtPath:path])
{
NSArray *childerFiles = [fileManager subpathsAtPath:path];
for (NSString *fileName in childerFiles)
{
NSString *fileAbsolutePath = [path stringByAppendingPathComponent:fileName];
if ([fileManager fileExistsAtPath:fileAbsolutePath])
{
long long size = [fileManager attributesOfItemAtPath:fileAbsolutePath error:nil].fileSize;
folderSize += size;
}
}
}
return folderSize;
}