二、文件属性的读取与修改
2.1文件属性读取
NSString *strPath =[[NSBundle mainBundle] pathForResource:@"lomo.jpg" ofType:nil];
NSLog(@"path:%@", strPath);
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *path = strPath;//@"/tmp/List";
NSError *error = nil;
NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:path error:&error];
if (fileAttributes != nil) {
NSNumber *fileSize = [fileAttributes objectForKey:NSFileSize];
NSString *fileOwner = [fileAttributes objectForKey:NSFileOwnerAccountName];
NSDate *fileModDate = [fileAttributes objectForKey:NSFileModificationDate];
NSDate *fileCreateDate = [fileAttributes objectForKey:NSFileCreationDate];
if (fileSize) {
NSLog(@"File size: %qi\n", [fileSize unsignedLongLongValue]);
}
if (fileOwner) {
NSLog(@"Owner: %@\n", fileOwner);
}
if (fileModDate) {
NSLog(@"Modification date: %@\n", fileModDate);
}
if (fileCreateDate) {
NSLog(@"create date:%@\n", fileModDate);
}
}
else {
NSLog(@"Path (%@) is invalid.", path);
}
2.2文件属性修改与写入
我们从2.1可知,文件属性具有类似,而不是简单只有的NSString或者NSInteger类型,因此,我们的写入类型和读取类型一致便可以写入。
- (BOOL)setAttributes:(NSDictionary<NSString *, id> *)attributes ofItemAtPath:(NSString *)path error:(NSError * _Nullable *)error
主要属性如下
NSError &error;
[NSFileManager defaultManager] setAttributes:@{NSFileModificationDate:[NSDate date],NSFileCreationDate:[NSDate date],NSFileOwnerAccountName:@""} ofItemAtPath:filePath error:&error];
NSFileOwnerAccountName我们可以在设置成http中的eTag
必要性:修改文件modify时间可以让我们移动开发中更好的处理断点续传和http304缓存。
注意:
有些文件可以修改成功,有些则修改失败。
目前测试不足,具体可以确定,非执行文件的修改时间可以修改成功,类似html可执行文件则出现了失败情况。