`

ios操作文件和字符串的示例代码

 
阅读更多

最近几天积累了一些示例代码,总结一下,熟练之前可以拷贝拿来用,节省到处找的时间

数组排序

数组中有多个文件full path,文件名中是带有时间戳的,所以想按照文件名排序,就可以实现按顺序上传了。代码如下:

    // 排序,需要根据时间戳确定上传的顺序
    NSArray *sorted = [zipFile sortedArrayUsingComparator:^NSComparisonResult(NSString *str1, NSString *str2) {
        NSString *fileName1 = [str1 lastPathComponent];
        NSString *fileName2 = [str2 lastPathComponent];
        NSStringCompareOptions options = NSCaseInsensitiveSearch | NSNumericSearch;
        return [fileName1 compare:fileName2 options:options];
    }];

zipFile是一个NSArray,里面是所有zip文件的path,在block里先将path截掉,只保留文件名,然后用NSString的compare方法来比较

遍历文件夹

拿到一个文件夹的path之后,要遍历此文件夹,得到所有文件和子目录的path

NSArray *fileList = [fileManager contentsOfDirectoryAtPath:@"/users/apple/Library" error:nil];

返回值是NSArray类型,元素是所有的文件和子目录

字符串拼接

如果字符串个数不多,那用NSString的各种stringByAppending方法就可以了,比如:

[@"abc" stringByAppendingString:@"def"];// abcdef

如果字符串的个数很多,用这个API就会非常难看,这个时候可以用stringWithFormat方法,比如:

[NSString stringWithFormat:@"%@,%@,%@", @"abc", @"def", @"ghi"];// abc,def,ghi

如果字符串的个数不确定,那上面2个方法就都不好用了,需要用NSMutableString,类似java里的StringBuilder

NSMutableString *result = [NSMutableString new];
    
[result appendString:first];
[result appendString:@","];

获取文件名

得到完整的path,经常想取出文件名:

[@"path/to/file.png" stringByDeletingLastPathComponent];// file.png

如果连扩展名都不想要:

[@"file.png" stringByDeletingPathExtension];// file

总之,在ios中操作文件夹和字符串还是很方便的,只要熟悉NSFileManager和NSString的API


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics