文件的管理
- 沙盒的概念
定義:
1、iOS中每個App應用程序都有一個`單獨封閉` 的文件夾。
2、沙盒目錄用來存放App的本地文件,例如:音頻、視頻、圖片文件
3、當前App應用陳旭沒權限訪問其他App的沙盒(更安全)
沙盒路徑的獲取
- 模擬器上的沙盒目錄路徑:
~/Library/Application Support/iPhone Simulator/版本/Applications
- 沙盒目錄中有如下子目錄
1、Documents存放長期使用的文件
2、Library系統存放文件
3、tmp臨時文件,App重啓時,該目錄下的文件清空
//沙盒的主目錄
NSString *homePath = NSHomeDirectory();
//2.獲取主目錄
NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory,NSSearchPathDomainMask domainMask,BOOL expandTilde)
//獲取沙盒下Documents目錄
NSString *documents = [homePath stringByAppendingPathComponent:@"Documents"];
//獲取沙盒下的Library目錄
NSString *library = [homePath stringByAppendingPathComponent:@"Library"];
//獲取沙盒下的tmp目錄
NSString *library = [homePath stringByAppendingPathComponent:@"tmp"];
- NSString處理路徑
//演示路徑
NSString *path = @"/User/iOS/file.txt";
//1.獲取路徑的組成部分 結果:("/","User","iOS","file.txt")
NSArray *components = [path pathComponents];
//2.路徑的最後一個組成部分 結果:file.txt
NSString *lastName = [path lastPathComponent];
//3.追加文件或目錄 結果:/User/iOS/file.txt/app.txt
NSString *filePath = [path stringByAppendingPathComponent:@"app.txt"];//(不需要加"/")
//4.刪除最後部分的組成部分 結果:/User/iOS
NSString *filePath = [path stringByDeletingLastPathComponent];
//5.獲取路徑最後部分的擴展名 結果:txt
NSString *extName = [path pathExtension];
//6.追加擴展名 結果:/User/iOS/file.txt.jpg
NSString *filePath = [path stringByAppendingPathExtension:@"jpg"];
- NSData
定義: NSData是對數據的一種抽象,任何數據都可以通過NSData來存儲,NSMutableData是可變的,繼承於NSData。
分類:
- 音頻數據
- 圖片數據
- 視頻數據
- 文本數據
示例
//NSString 轉 NSData
NSData *data = [s dataUsingEncoding:NSUTF8StringEncoding];
//NSData 轉 NSString
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
- NSFileManager
定義: NSFileManager主要對文件進行管理
功能:
- 創建文件
- 複製文件
- 刪除文件
- 剪切文件
//創建NSFileManager對象
NSFileManager *fileManager = [NSFileManager defaultManager];
//創建:一個文件並寫入數據
-(BOOL) createFileAtPath:(NSString *)path contents:(NSData *)data;
//從一個文件中讀取數據
-(NSData *)contentsAtPath:(NSString *)path;
//剪切:srcPath路徑上的文件移動到dstPath路徑上,注意這裏的路徑是文件路徑而不是目錄(可以修改文件名)
-(BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **/*雙重指針變量*/)error;
//複製:srcPath路徑上的文件複製到dstPath路徑上
-(BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError *)error;
//文件是否存在
-(BOOL)fileExistsAtPath:(NSString *)path;
//移除文件(刪除)
-(BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error;
//文件屬性
-(NSDictionary)attributesOfItemAtPath:(NSString *)path error:(NSSError **)error;
- NSFileHandle