前提,用到的東東:
一、文件數據類:NSData類型(二進制)
1)做用:專門用於將數據封裝成二進制的類。數據(文本,圖片,音頻,視頻....) ==> NSData類型的對象
2)編碼方式:使用UTF8國際通用編碼
encoding:NSUTF8StringEncoding
3)NSString與NSData相互轉換
NSString *contents = @"我是要保存到文件中去的內容,哈哈";
//將NSString轉換成NSData類型
NSData *data = [contents dataUsingEncoding:NSUTF8StringEncoding];
//將NSData轉換成NSString,
NSString *contents2 = [[NSString alloc]initWithData:data2 encoding:NSUTF8StringEncoding];
atomically:原子性
二、NSURL類型:
必須以協議頭(http://,ftp://,file://)
能夠建立目錄,不能建立文件
file:///Users/tarena/Desktop/my.txt
//將字符串轉換成NSURL類型
NSURL *url2 = [NSURL URLWithString:Str];
NSData *htmlData = [NSData dataWithContentsOfURL:url2];
2) 和PATH的區別:
URL必須經訪問協議開頭(http://, ftp://, file://…), 是NSURL類型的對象
PATH沒有協議, 是字符串對象
三、NSError類型
用於獲取錯誤信息
NSError *error = nil;
NSLog(@"簡潔寫入文件失敗:%@", error.userInfo);
四、文件操做:建立、寫入文本、讀取文本、移動、複製、刪除文件
五、類NSFileManager
獲取文件屬性: attributesOfItemAtPath,返回字典
判斷是否存在: fileExistsAtPath
建立+寫入文件:createFileAtPath
讀取字:contentsAtPath
使用NSString讀寫文本
寫入文件:writeToFile
讀取:stringWithContentsOfFile
建立文件夾:createDirectoryAtPath
刪除文件:removeItemAtPath
複製:copyItemAtPath
NSFileManager *manager = [NSFileManager defaultManager];
//建立文件
BOOL flage = [manager createFileAtPath:@"/Users/tarena/Desktop/my.txt" contents:nil attributes:nil];
if (flage) {
NSLog(@"文件建立成功!");
}else{
NSLog(@"文件建立失敗!");
}
//建立文件的同時給文件寫入內容
NSString *contents = @"我是要保存到文件中去的內容,哈哈";
//NSString ==> NSData
NSData *data = [contents dataUsingEncoding:NSUTF8StringEncoding];
//建立並寫入內容
flage = [manager createFileAtPath:@"/Users/tarena/Desktop/my2.txt" contents:data attributes:nil];
//字符串的簡潔寫入文件方法
NSError *error = nil;
flage= [contents writeToFile:@"/Users/tarena/Desktop/my3.txt" atomically:YES encoding:NSUTF8StringEncoding error:&error];
//從文件中讀取內容
NSData *data2 = [manager contentsAtPath:@"/Users/tarena/Desktop/my3.txt"];
//NSData ==> NSString
NSString *contents2 = [[NSString alloc]initWithData:data2 encoding:NSUTF8StringEncoding];
NSLog(@"從文件中讀到的內容是:%@", contents2);
//從文件中讀取字符串內容的簡潔方法
NSString *contents3 = [NSString stringWithContentsOfFile:@"/Users/tarena/Desktop/my3.txt" encoding:NSUTF8StringEncoding error:nil];
NSLog(@"直接從文件中讀字符串:%@", contents3);
//刪除文件
error = nil;
res = [manager removeItemAtPath:@"/Users/tarena/Desktop/my.txt" error:&error];
if(!res){
NSLog(@"刪除失敗:%@", error.userInfo);
}
//判斷目錄是否存在
NSString *path = @"/Users/tarena/Desktop/files";
flage= [[NSFileManager defaultManager]fileExistsAtPath:path];
//拷貝文件,若是目標已經存在,由拷貝失敗
NSString *sourcePath = @"/Users/tarena/Desktop/app.txt";
NSString *targetPath = @"/Users/tarena/Desktop/app2.txt";
if(![manager copyItemAtPath:sourcePath toPath:targetPath error:nil]){
NSLog(@"拷貝失敗!");
}
//使用URL來操做文件或目錄
//建立一個目錄
NSURL *url = [NSURL URLWithString:@"file:///Users/tarena/Desktop/urldir"];
if (![manager createDirectoryAtURL:url withIntermediateDirectories:YES attributes:nil error:nil]){
NSLog(@"使用URL建立目錄失敗!");
}
//使用path來將一個文件的二進制數據讀入到NSData(假設這個文件是圖片,或視頻等,就不能讀成字符串)
NSData *data = [NSData dataWithContentsOfFile:@"/Users/tarena/Desktop/app.txt"];
NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@", str);
//使用URL將一個文件的二進制數據讀入內存中(使用NSData對象來封裝)
//將字符串轉換成NSURL類型
NSURL *url2 = [NSURL URLWithString:urlStr];
//獲取到數據
NSData *htmlData = [NSData dataWithContentsOfURL:url2];
//將數據轉換成NSString類型
NSString *htmlStr = [[NSString alloc]initWithData:htmlData encoding:NSUTF8StringEncoding];
NSLog(@"%@", htmlStr);
//獲取文件屬性
NSString *path=[self.documentPath stringByAppendingPathComponent:@"hello.txt"];
NSDictionary *dic=[[NSFileManager defaultManager]attributesOfItemAtPath:path error:nil];
NSLog(@"%@",[dic description]);//輸出文件的屬性內容
NSUInteger fileSize=[dic[NSFileSize]integerValue];//文件大小是覺得字節單位
NSLog(@"文件大小:%lu",(unsigned long)fileSize);