NSData和NSString 、 NSFileManager
1 NSData和NSMutableData的基本使用
1.1 问题
NSData类是IOS提供的用于以二进制的形式操作文件数据的类,NSData有两个常用的属性length和bytes,length表示字节的数量,bytes起始字节的位置是一个指针类型,本案例演示NSData和NSMutableData的基本使用,使用NSData /NSMutableData对象保存一个C语言字符串。
1.2 方案
首先使用Xcode创建一个命令行项目,在main函数中创建一个NSData对象data,使用initWithBytes:length:方法进行初始化,将一个C语言字符串保存起来,bytes参数就是字符串的起始地址,length是字节长度,可以通过在控制台输出查看。
然后在main函数中创建一个NSMutableData对象mdata,可以使用initWithData:方法进行初始化,data是一个NSData类型的参数。
最后通过NSMutableData类提供的方法resetBytesInRange:、appendData:、replaceBytesInRange:withBytes:分别对mdata对象进行重置、拼接和替换修改等操作。
1.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:创建NSData对象
首先在创建好的命令行项目中创建一个NSData对象,使用initWithBytes:length:方法进行初始化,本案例将一个C语言字符串保存起来,bytes参数就是字符串的起始地址,length是字节长度,代码如下所示:
- int main(intargc, const char * argv[]) {
- @autoreleasepool {
- char *s1 = "abc";
- //length参数传递的值为strlen(s1)+1,因为要保存C语言字符串末尾的\0
- NSData *data = [[NSDataalloc]initWithBytes:s1length:strlen(s1)+1];
- }
- return 0;
- }
然后在控制台输出data对象的bytes和length属性,bytes属性使用%s占位符,length属性使用%lu占位符,代码如下所示:
- int main(intargc, const char * argv[]) {
- @autoreleasepool {
- char *s1 = "abc";
- NSData *data = [[NSDataalloc]initWithBytes:s1length:strlen(s1)+1];
- NSLog(@"%s,%lu",data.bytes,(unsigned long)data.length);
- }
- return 0;
- }
最后运行程序在控制台输出,可以看见控制台将字符串“abc”输出,字节长度是4个,如图-1所示:
图-1
步骤二:创建NSMutableData对象
首先在main函数中创建一个NSMutableData对象mdata,可以使用initWithData:方法进行初始化,data参数传递上一步创建好的data对象,代码如下所示:
- int main(intargc, const char * argv[]) {
- @autoreleasepool {
- char *s1 = "abc";
- NSData *data = [[NSDataalloc]initWithBytes:s1length:strlen(s1)+1];
- NSLog(@"%s,%lu",data.bytes,(unsigned long)data.length);
- NSMutableData *mdata = [[NSMutableDataalloc]initWithData:data];
- NSLog(@"%s,%lu",mdata.bytes,mdata.length);
- }
- return 0;
- }
此时mdata对象保存的同样是“abc”字符串。然后使用NSMutableData类提供的方法resetBytesInRange:将mdata对象里面的数据全都置为零,使用appendData:方法将data对象拼接到mdata对象的末尾,代码如下所示:
- int main(intargc, const char * argv[]) {
- @autoreleasepool {
- char *s1 = "abc";
- NSData *data = [[NSDataalloc]initWithBytes:s1length:strlen(s1)+1];
- NSLog(@"%s,%lu",data.bytes,(unsigned long)data.length);
- NSMutableData *mdata = [[NSMutableDataalloc]initWithData:data];
- NSLog(@"%s,%lu",mdata.bytes,mdata.length);
- NSRange range = {0,4};
- [mdataresetBytesInRange:range];
- [mdataappendData:data];
- }
- return 0;
- }
最后使用replaceBytesInRange:withBytes:将mdata对象的第0-4个字节的数据用字符串“1234”替换,代码如下所示:
- int main(intargc, const char * argv[]) {
- @autoreleasepool {
- char *s1 = "abc";
- NSData *data = [[NSDataalloc]initWithBytes:s1length:strlen(s1)+1];
- NSLog(@"%s,%lu",data.bytes,(unsigned long)data.length);
- NSMutableData *mdata = [[NSMutableDataalloc]initWithData:data];
- NSLog(@"%s,%lu",mdata.bytes,mdata.length);
- NSRange range = {0,4};
- [mdataresetBytesInRange:range];
- [mdataappendData:data];
- char *s2 = "1234";
- [mdatareplaceBytesInRange:range withBytes:s2];
- NSLog(@"%s",mdata.bytes);
- }
- return 0;
- }
运行程序在控制台输出,可以看见控制台将拼接的字符串“1234abc”输出,字节长度是8个,如图-2所示:
图-2
1.4 完整代码
本案例中,main.m文件中的完整代码如下所示:
- #import<Foundation/Foundation.h>
- int main(intargc, const char * argv[]) {
- @autoreleasepool {
- char *s1 = "abc";
- NSData *data = [[NSDataalloc]initWithBytes:s1length:strlen(s1)+1];
- NSLog(@"%s,%lu",data.bytes,(unsigned long)data.length);
- NSMutableData *mdata = [[NSMutableDataalloc]initWithData:data];
- NSLog(@"%s,%lu",mdata.bytes,mdata.length);
- NSRange range = {0,4};
- [mdataresetBytesInRange:range];
- [mdataappendData:data];
- char *s2 = "1234";
- [mdatareplaceBytesInRange:range withBytes:s2];
- NSLog(@"%s,%lu",mdata.bytes,mdata.length);
- }
- return 0;
- }
2 使用NSString和NSData读写文件
2.1 问题
NSString和NSData类可以相互转换。并且都可以通过writetoFile:方法直接写入文件,本案例使用NSString和NSData读写文件。
2.2 方案
首先使用Xcode创建一个命令行项目,在main函数中创建一个NSString类型的对象string,然后使用的方法writeToFile:atomically:encoding:将字符串直接写入文件,file参数是写入本地的文件路径,这里暂时使用电脑桌面路径(实际开发使用的应该是手机路径,后面课程会一一介绍),atomically参数设置为YES,encoding参数是字符串的编码格式,设置为最常用的编码格式UTF-8。
然后在通过stringWithContentsOfFile:encoding:error:方法从文件中读取字符串,编码格式要与写入文件时使用的编码格式保持一致。如果在不知道编码格式的情况下可以使用stringWithContentsOfFile:usedEncoding:error:方法猜出编码格式,猜出的编码格式会通过引用参数usedEncoding返回。
如果希望对NSString对象进行二进制的操作,那么就需要先将NSString对象转化为NSData对象,然后再使用NSData提供的写入文件的方法writeToFile:atomically:将NSString类型的对象存入文件。
最后在读取文件的时候可以使用NSData提供的的dataWithContentsOfFile:方法或者是initWithContentsOfFile:方法。
2.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:NSString直接写入文件
首先在main函数中创建一个NSString类型的对象string,存储字符串“Hello world!”,然后使用的方法writeToFile:atomically:encoding:将字符串直接写入文件,file参数是写入本地的文件路径,这里暂时使用电脑桌面路径“/Users/Tarena/Desktop/hello.txt”,atomically参数设置为YES安全写入,encoding参数设置为NSUTF8StringEncoding,代码如下所示:
- int main(intargc, const char * argv[]) {
- @autoreleasepool {
- NSString *string = @"Hello world!";
- [stringwriteToFile:@"/Users/Tarena/Desktop/hello.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
- }
- return 0;
- }
然后运行程序,电脑桌面会增加一个名为hello.txt的文件,文件内容就是字符串“Hello world!”如图-3所示:
图-3
最后通过stringWithContentsOfFile:encoding:error:方法从文件中读取字符串,编码格式要与写入文件时使用的编码格式保持一致,代码如下所示:
- int main(intargc, const char * argv[]) {
- @autoreleasepool {
- NSString *string = @"Hello world!";
- [stringwriteToFile:@"/Users/Tarena/Desktop/hello.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
- NSString *string1 = [NSStringstringWithContentsOfFile:@"/Users/Tarena/Desktop/hello.txt" encoding:NSUTF8StringEncoding error:nil];
- NSLog(@"string1:%@",string1);
- }
- return 0;
- }
如果在不知道编码格式的情况下可以使用stringWithContentsOfFile:usedEncoding:error:方法猜出编码格式,猜出的编码格式会通过引用参数usedEncoding返回,代码如下所示:
- int main(intargc, const char * argv[]) {
- @autoreleasepool {
- NSString *string = @"Hello world!";
- [stringwriteToFile:@"/Users/Tarena/Desktop/hello.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
- NSString *string1 = [NSStringstringWithContentsOfFile:@"/Users/Tarena/Desktop/hello.txt" encoding:NSUTF8StringEncoding error:nil];
- NSLog(@"string1:%@",string1);
- //在不知道编码信息的情况下可以通过此方法猜出编码
- NSStringEncodinguseEncoding;
- NSString *string2 = [NSStringstringWithContentsOfFile:@"/Users/Tarena/Desktop/hello.txt" usedEncoding:&useEncodingerror:nil];
- //useEncoding就是猜出的编码格式
- NSLog(@"string2:%@,%lu",string2,(unsigned long)useEncoding);
- }
- return 0;
- }
运行程序,读取的字符串仍然是“Hello world!”控制台输出的的useEncoding的值是4,查看对应的枚举值就是NSUTF8StringEncoding。
步骤二:将NSString转化为NSData写入文件
首先使用NSString提供的方法dataUsingEncoding:将string对象转化为NSData类型的对象data,然后再使用NSData提供的写入文件的方法writeToFile:atomically:将data对象写入文件,file参数就是文件的路径,代码如下所示:
- string = @"1234567890";
- NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
- [datawriteToFile:@"/Users/Tarena/Desktop/123.txt" atomically:YES];
运行程序,电脑桌面会增加一个名为123.txt的文件,文件内容就是字符串“1234567890”,如图-4所示:
图-4
最后使用NSData提供的的dataWithContentsOfFile:方法或者是initWithContentsOfFile:方法读取文件,代码如下所示:
- string1 = [[NSStringalloc]initWithData:data2 encoding:NSUTF8StringEncoding];
- NSLog(@"%@",string1);
运行程序,控制台输出的字符串是“1234567890“。
2.4 完整代码
本案例中,main.m文件中的完整代码如下所示:
- #import<Foundation/Foundation.h>
- int main(intargc, const char * argv[]) {
- @autoreleasepool {
- NSString *string = @"Hello world!";
- [stringwriteToFile:@"/Users/Tarena/Desktop/hello.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
- NSString *string1 = [NSStringstringWithContentsOfFile:@"/Users/Tarena/Desktop/hello.txt" encoding:NSUTF8StringEncoding error:nil];
- NSLog(@"string1:%@",string1);
- //在不知道编码信息的情况下可以通过此方法猜出编码
- NSStringEncodinguseEncoding;
- NSString *string2 = [NSStringstringWithContentsOfFile:@"/Users/Tarena/Desktop/hello.txt" usedEncoding:&useEncodingerror:nil];
- //useEncoding就是猜出的编码格式
- NSLog(@"string2:%@,%lu",string2,(unsigned long)useEncoding);
- string = @"1234567890";
- NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
- [datawriteToFile:@"/Users/Tarena/Desktop/123.txt" atomically:YES];
- NSData *data2 = [NSDatadataWithContentsOfFile:@"/Users/Tarena/Desktop/123.txt"];
- string1 = [[NSStringalloc]initWithData:data2 encoding:NSUTF8StringEncoding];
- NSLog(@"%@",string1);
- }
- return 0;
- }
3 文件路径的基本操作
3.1 问题
文件路径是一个NSString类型的字符串,以“/”开头代表根目录,本案例演示如何使用NSString类提供了几种常用的操作路径的方法。
3.2 方案
首先在main函数中创建一个NSString类型的对象path,用于存储一个路径@"/Users/tarena/Desktop"。
然后使用NSString提供的方法stringByAppendingPathComponent:对路径进行拼接,再使用pathComponents方法拆分路径。
最后使用NSString提供的方法进行添加文件扩展名、获取和删除文件名等其他操作。
3.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:创建路径
首先在main函数中创建一个NSString类型的对象path,用于存储一个路径@"/Users/tarena/Desktop"。
然后使用NSString提供的方法stringByAppendingPathComponent:对路径进行拼接,代码如下所示:
- int main(intargc, const char * argv[])
- {
- @autoreleasepool {
- NSString * path = @"/Users/tarena/Desktop";
- // 拼出子文件夹/子文件路径,会自动补上/
- NSLog(@"%@", [path stringByAppendingPathComponent:@"xcode_5.dmg"]);
- }
- return 0;
- }
运行程序,控制台输出拼接好的路径,如图-5所示:
图-5
再使用pathComponents方法拆分路径,该方法会将组成路径的每个部分拆分开来,并且存储带一个数组中,该数组就是pathComponents方法的返回值,代码如下所示“
- int main(intargc, const char * argv[])
- {
- @autoreleasepool {
- // 1. 路径的组成
- NSString * path = @"/Users/apple/Desktop";
- // 2. 拼出子文件夹/子文件路径,自动补上/
- NSLog(@"%@", [path stringByAppendingPathComponent:@"xcode_5.dmg"]);
- // 3. 拆分一个路径的component
- NSArray * components = [path pathComponents];
- for (NSString * component in components) {
- NSLog(@"%@", component);
- }
- return 0;
- }
运行程序,控制台依次输出组成路径的每个文件夹和文件名,如图-6所示:
图-6
步骤二:关于路径的其他操作
使用stringByAppendingPathExtension:给文件名添加扩展名,代码如下所示:
- // 4. 追加文件扩张名,自动补上“.”
- NSString * path2 = @"/User/tarena/Desktop";
- path2 = [path2 stringByAppendingPathComponent:@"Elephant"];
- path2 = [path2 stringByAppendingPathExtension:@"jpg"];
- NSLog(@"%@", path2);
运行程序控制台输出的路径为“/User/tarena/Desktop/Elephant.jpg”。
使用pathExtension方法获取文件扩展名,代码如下所示:
- NSString * extension = [path2 pathExtension];
- NSLog(@"%@", extension);
使用lastPathComponent方法获取文件名,代码如下所示:
- NSString * component = [path2 lastPathComponent];
- NSLog(@"%@", component);
使用stringByDeletingLastPathComponent方法获取父文件夹路径,代码如下所示:
- NSString * path3 = [path2 stringByDeletingLastPathComponent];
- NSLog(@"%@", path3);
3.4 完整代码
本案例中,main.m文件中的完整代码如下所示:
- #import<Foundation/Foundation.h>
- int main(intargc, const char * argv[])
- {
- @autoreleasepool {
- // 1. 路径的组成 /文件夹名/文件夹名/文件夹名/....../文件名
- NSString * path = @"/Users/tarena/Desktop";
- // 2. 拼出子文件夹/子文件路径,自动补上/
- NSLog(@"%@", [path stringByAppendingPathComponent:@"xcode_5.dmg"]);
- // 3. 拆分一个路径的component
- NSArray * components = [path pathComponents];
- for (NSString * component in components) {
- NSLog(@"%@", component);
- }
- // 4. 追加文件扩张名,自动补上“.”
- NSString * path2 = @"/User/tarena/Desktop";
- path2 = [path2 stringByAppendingPathComponent:@"Elephant"];
- path2 = [path2 stringByAppendingPathExtension:@"jpg"];
- NSLog(@"%@", path2);
- // 5. 获取文件后缀,用于判断文件类型(简单)
- NSString * extension = [path2 pathExtension];
- NSLog(@"%@", extension);
- // 6. 获取最后一个component,获取文件/文件夹的名字
- NSString * component = [path2 lastPathComponent];
- NSLog(@"%@", component);
- // 7. 删除最后一个component,返回上层文件夹/获取父文件夹路径
- NSString * path3 = [path2 stringByDeletingLastPathComponent];
- NSLog(@"%@", path3);
- }
- return 0;
- }
4 使用NSFileManager操作文件
4.1 问题
NSFileManager是IOS提供的对本地文件进行操作的类,例如创建目录、创建文件、遍历文件和文件夹、删除文件以及拷贝文件等,本案例演示使用NSFileManager对文件进行基本的操作。
4.2 方案
首先在main函数中通过defaultManager方法获取NSFileManager对象fileManager是一个单例对象,使用fileManager提供的方法createDirectoryAtPath:withIntermediateDirectories: attributes:error:在桌面创建一组文件夹,文件夹的层级关系如下:
首先有一个users文件夹;
users文件夹下有三个子文件夹分别为10000、10010、10086;
10000、10010、10086三个文件夹下分别又有四个子文件夹分别为images、cache、 download、history。
其次使用fileManager的方法createFileAtPath:contents:attributes:在images、cache、 download、history四个文件中创建文件,命名为data。如果是10086文件夹,则使用fileManager的方法removeItemAtPath:error:将data文件删除。
然后使用fileManager的方法contentsOfDirectoryAtPath:遍历刚才创建的users文件夹的内容,并且判断是否为文件夹。
最后fileManager的方法copyItemAtPath:toPath:将一张图片拷贝到电脑桌面。
4.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:创建users文件夹
首先在main函数中通过defaultManager方法获取NSFileManager对象fileManager是一个单例对象,使用fileManager提供的方法createDirectoryAtPath:withIntermediateDirectories: attributes:error:在桌面创建一组文件夹users,代码如下所示:
- int main(intargc, const char * argv[])
- {
- @autoreleasepool {
- //获取fileManager
- NSFileManager * fileManager = [NSFileManagerdefaultManager];
- //创建文件和文件夹
- NSString * rootPath = @"/Users/Tarena/Desktop";
- NSString * usersFolder = @"users";
- NSArray * users = @[@"10086", @"10010", @"10000"];
- NSArray * folders = @[@"images", @"cache", @"download", @"history"];
- NSString * usersPath = [rootPathstringByAppendingPathComponent:usersFolder];
- for (NSString * user in users){
- for (NSString * folder in folders) {
- NSString * folderPath = nil;
- folderPath = [usersPathstringByAppendingPathComponent:user];
- folderPath = [folderPathstringByAppendingPathComponent:folder];
- //创建目录创建文件夹,withIntermediateDirectories是否顺便创建中间没有创建的文件夹
- [fileManagercreateDirectoryAtPath:folderPathwithIntermediateDirectories:YESattributes:nilerror:nil];
- }
- }
- }
- return 0;
- }
运行程序,可见桌面上增加一个文件夹users,如图-7所示:
图-7
步骤二:创建data文件
首先使用fileManager的方法createFileAtPath:contents:attributes:在images、cache、 download、history四个文件中创建文件,命名为data,代码如下所示:
- int main(intargc, const char * argv[])
- {
- @autoreleasepool {
- NSFileManager * fileManager = [NSFileManagerdefaultManager];
- //创建文件和文件夹
- NSString * rootPath = @"/Users/Tarena/Desktop";
- NSString * usersFolder = @"users";
- NSArray * users = @[@"10086", @"10010", @"10000"];
- NSArray * folders = @[@"images", @"cache", @"download", @"history"];
- NSString * usersPath = [rootPathstringByAppendingPathComponent:usersFolder];
- for (NSString * user in users){
- for (NSString * folder in folders) {
- NSString * folderPath = nil;
- folderPath = [usersPathstringByAppendingPathComponent:user];
- folderPath = [folderPathstringByAppendingPathComponent:folder];
- //创建目录创建文件夹,withIntermediateDirectories是否顺便创建中间没有创建的文件夹
- [fileManagercreateDirectoryAtPath:folderPathwithIntermediateDirectories:YESattributes:nilerror:nil];
- NSString *filePath = [folderPathstringByAppendingPathComponent:@"data"];
- NSString *string = @"123456";
- NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
- //创建文件
- [fileManagercreateFileAtPath:filePathcontents:dataattributes:nil];
- }
- }
- }
- return 0;
- }
如果是10086文件夹,则使用fileManager的方法removeItemAtPath:error:将data文件删除,代码如下所示:
- int main(intargc, const char * argv[])
- {
- @autoreleasepool {
- NSFileManager * fileManager = [NSFileManagerdefaultManager];
- //创建文件和文件夹
- NSString * rootPath = @"/Users/Tarena/Desktop";
- NSString * usersFolder = @"users";
- NSArray * users = @[@"10086", @"10010", @"10000"];
- NSArray * folders = @[@"images", @"cache", @"download", @"history"];
- NSString * usersPath = [rootPathstringByAppendingPathComponent:usersFolder];
- for (NSString * user in users){
- for (NSString * folder in folders) {
- NSString * folderPath = nil;
- folderPath = [usersPathstringByAppendingPathComponent:user];
- folderPath = [folderPathstringByAppendingPathComponent:folder];
- //创建目录创建文件夹,withIntermediateDirectories是否顺便创建中间没有创建的文件夹
- [fileManagercreateDirectoryAtPath:folderPathwithIntermediateDirectories:YESattributes:nilerror:nil];
- NSString *filePath = [folderPathstringByAppendingPathComponent:@"data"];
- NSString *string = @"123456";
- NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
- //创建文件
- [fileManagercreateFileAtPath:filePathcontents:dataattributes:nil];
- //删除文件
- if ([user isEqualToString:@"10086"]) {
- [fileManagerremoveItemAtPath:filePatherror:nil];
- }
- }
- }
- }
- return 0;
- }
运行程序,可以看到10000和10010两个文件夹中的所有子文件夹里面都有data文件,而10086里面则没有。
步骤三:遍历文件夹和文件
使用fileManager的方法contentsOfDirectoryAtPath:遍历刚才创建的users文件夹的内容,该方法将users的子文件名称放进一个数组返回,代码如下所示:
- //遍历文件夹下的子文件/子文件夹
- NSArray *fileNames = [fileManagercontentsOfDirectoryAtPath:usersPatherror:nil];
然后将每个文件名输出,并且使用fileExistsAtPath:isDirectory:方法判断该文件是否为文件夹,代码如下所示:
- for (NSString *fileName in fileNames) {
- BOOL isDirectory;
- NSString *filePath = [usersPathstringByAppendingPathComponent:fileName];
- //判断文件是否存在,以引用参数isDirectory返回是否为文件夹
- if ([fileManagerfileExistsAtPath:filePathisDirectory:&isDirectory]) {
- NSLog(@"%@是文件夹,isDirectory:%d",fileName,isDirectory);
- }
- }
步骤四:拷贝文件
使用fileManager的方法copyItemAtPath:toPath:将一张图片拷贝到电脑桌面,代码如下所示:
- //首先判断文件是否存在
- if ([fileManagerfileExistsAtPath:@"/Users/Tarena/Pictures/IMG_5723.JPG"]) {
- //拷贝文件
- [fileManagercopyItemAtPath:@"/Users/Tarena/Pictures/IMG_5723.JPG" toPath:@"/Users/Tarena/Desktop/photo.jpg" error:nil];
- }
4.4 完整代码
本案例中,main.m文件中的完整代码如下所示:
- #import<Foundation/Foundation.h>
- int main(intargc, const char * argv[])
- {
- @autoreleasepool {
- NSFileManager * fileManager = [NSFileManagerdefaultManager];
- //创建文件和文件夹
- NSString * rootPath = @"/Users/Tarena/Desktop";
- NSString * usersFolder = @"users";
- NSArray * users = @[@"10086", @"10010", @"10000"];
- NSArray * folders = @[@"images", @"cache", @"download", @"history"];
- NSString * usersPath = [rootPathstringByAppendingPathComponent:usersFolder];
- for (NSString * user in users){
- for (NSString * folder in folders) {
- NSString * folderPath = nil;
- folderPath = [usersPathstringByAppendingPathComponent:user];
- folderPath = [folderPathstringByAppendingPathComponent:folder];
- //创建目录创建文件夹,withIntermediateDirectories是否顺便创建中间没有创建的文件夹
- [fileManagercreateDirectoryAtPath:folderPath
- withIntermediateDirectories:YES
- attributes:nil
- error:nil];
- NSString *filePath = [folderPathstringByAppendingPathComponent:@"data"];
- NSString *string = @"123456";
- NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
- //创建文件
- [fileManagercreateFileAtPath:filePathcontents:dataattributes:nil];
- //删除文件
- if ([user isEqualToString:@"10086"]) {
- [fileManagerremoveItemAtPath:filePatherror:nil];
- }
- }
- }
- //遍历文件夹下的子文件/子文件夹
- NSArray *fileNames = [fileManagercontentsOfDirectoryAtPath:usersPatherror:nil];
- for (NSString *fileName in fileNames) {
- BOOL isDirectory;
- NSString *filePath = [usersPathstringByAppendingPathComponent:fileName];
- //判断文件是否存在,以引用参数isDirectory返回是否为文件夹
- if ([fileManagerfileExistsAtPath:filePathisDirectory:&isDirectory]) {
- NSLog(@"%@是文件夹,isDirectory:%d",fileName,isDirectory);
- }
- }
- //首先判断文件是否存在
- if ([fileManagerfileExistsAtPath:@"/Users/Tarena/Pictures/IMG_5723.JPG"]) {
- //拷贝文件
- [fileManagercopyItemAtPath:@"/Users/Tarena/Pictures/IMG_5723.JPG" toPath:@"/Users/Tarena/Desktop/photo.jpg" error:nil];
- }
- }
- return 0;
- }
NSData和NSString 、 NSFileManager的更多相关文章
- 解决NSData转NSString返回nil的问题
// 字符串转Data NSString *str =@"jesfds"; NSData *data =[str dataUsingEncoding:NSUTF8StringEnc ...
- iOS解决NSData转NSString后字符为空
iOS中,将NSData转NSString的一般方法为[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];但是当dat ...
- Object-C 中各数据类型转换 NSData转NSString,Byte,UIImage
1,NSData 与 NSString NSData --> NSString NSString *aString = [[NSString alloc] initWithData:adata ...
- ios 数据类型转换 UIImage转换为NSData NSData转换为NSString
1.UIImage转换为NSData NSData *data;if (UIImagePNGRepresentation(image) == nil) { data = UIImageJPEGRepr ...
- NSData NSDate NSString NSArray NSDictionary 相互转换
// NSData NSDate NSString NSArray NSDictionary json NSString *string = @"hello word"; NSDa ...
- ios -- NSdata 与 NSString,Byte数组,UIImage 的相互转换(转)
1. NSData 与 NSStringNSData-> NSStringNSString *aString = [[NSString alloc] initWithData:adata enc ...
- NSdata 与 NSString,Byte数组,UIImage 的相互转换
1. NSData 与 NSString NSData-> NSString NSString *aString = [[NSString alloc] initWithData:adataen ...
- (转)Object-C 中各数据类型转换 NSData转NSString,Byte,UIImage
,NSData 与 NSString NSData --> NSString NSString *aString = [[NSString alloc] initWithData:adata e ...
- ios开发之 -- NSData 和 NSString , UIImage 等之间的互转
//NSData转换为UIImage NSData *imageData = [NSData dataWithContentsOfFile: imagePath]; UIImage *image = ...
- NSData NSDate NSString NSArray NSDictionary 相互转化
// NSData NSDate NSString NSArray NSDictionary json NSString *string = @"hello word"; ...
随机推荐
- 生成json对象
JSONObject 对于放入的object,最终生成的json是什么样的? 两个JavaBean: public class ClassBean { private int grade; priva ...
- Storm(1) - Setting Up Development Environment
Setting up your development environment 1. download j2se 6 SDK from http://www.oracle.com/technetwor ...
- DBCC DBREINDEX重建索引提高SQL Server性能
大多数SQL Server表需要索引来提高数据的访问速度,如果没有索引,SQL Server 要进行表格扫描读取表中的每一个记录才能找到索要的数据.索引可以分为簇索引和非簇索引,簇索引通过重排表中的数 ...
- 如何在 CentOS 中设置 NTP 服务器
网络时间协议(NTP)用来同步网络上不同主机的系统时间.你管理的所有主机都可以和一个指定的被称为 NTP 服务器的时间服务器同步它们的时间.而另一方面,一个 NTP 服务器会将它的时间和任意公共 NT ...
- 一个QQ木马的逆向分析浅谈(附带源码)
程序流程:首先注册自己程序的窗口以及类等一系列窗口操作,安装了一个定时器,间隔为100ms,功能搜索QQ的类名,如果找到就利用FindWindow("5B3838F5-0C81-46D9-A ...
- c++普通高精加
//作为一名蒟蒻,还请诸位不要吐槽. //第一次打c++高精加,内心有点小激动. //为codevs3116 高精度练习之加法 //程序太简单,就不打注释了. #include<cstdio&g ...
- <转>提高iOS开发效率的方法和工具
介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时在使用AppCode等其他的ID ...
- 20145338 《Java程序设计》第1周学习总结
教材学习内容总结 第一章 java平台概论 1.1Java不只是语言 Java最早是Sun公司"绿色项目"中撰写Star应用程序的程序语言,当时叫Oak.1995年5月23日改名为 ...
- KMP算法中next函数的理解
首先要感谢http://blog.csdn.net/v_july_v/article/details/7041827以及http://blog.chinaunix.net/uid-27164517-i ...
- 多功能节点连线绘图控件Nevron Diagram for .NET使用方法及下载地址
Nevron Diagram for .NET是一个功能强大,世界上顶级的.NET图表控件.可扩展的图形报表构架,可以帮您创建功能丰富的Winforms及Webforms图表解决方案.这个产品构建于N ...