ios 文件管理 获取文件属性 读取文件

举报
清雨小竹 发表于 2022/09/25 01:37:17 2022/09/25
【摘要】 1、文件的创建-(IBAction) CreateFile{//对于错误信息NSError *error;// 创建文件管理器NSFileManager *fileMgr = [NSFileManager defaultManager];//指向文件目录NSString *documentsDirectory= [NSHomeDirec...

  
  1. 1、文件的创建
  2. -(IBAction) CreateFile
  3. {
  4. //对于错误信息
  5. NSError *error;
  6. // 创建文件管理器
  7. NSFileManager *fileMgr = [NSFileManager defaultManager];
  8. //指向文件目录
  9. NSString *documentsDirectory= [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
  10. //创建一个目录
  11. [[NSFileManager defaultManager] createDirectoryAtPath: [NSString stringWithFormat:@"%@/myFolder", NSHomeDirectory()] attributes:nil];
  12. // File we want to create in the documents directory我们想要创建的文件将会出现在文件目录中
  13. // Result is: /Documents/file1.txt结果为:/Documents/file1.txt
  14. NSString *filePath= [documentsDirectory
  15. stringByAppendingPathComponent:@"file2.txt"];
  16. //需要写入的字符串
  17. NSString *str= @"iPhoneDeveloper Tipsnhttp://iPhoneDevelopTips,com";
  18. //写入文件
  19. [str writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];
  20. //显示文件目录的内容
  21. NSLog(@"Documentsdirectory: contentsOfDirectoryAtPath:documentsDirectory error:&error]);
  22. 
}
  23. 2、对文件重命名
  24. 对一个文件重命名
  25. 想要重命名一个文件,我们需要把文件移到一个新的路径下。下面的代码创建了我们所期望的目标文件的路径,然后请求移动文件以及在移动之后显示文件目录。
  26. //通过移动该文件对文件重命名
  27. NSString *filePath2= [documentsDirectory
  28. stringByAppendingPathComponent:@"file2.txt"];
  29. //判断是否移动
  30. if ([fileMgr moveItemAtPath:filePath toPath:filePath2 error:&error] != YES)
  31. NSLog(@"Unable to move file: %@", [error localizedDescription]);
  32. //显示文件目录的内容
  33. NSLog(@"Documentsdirectory: %@",
  34. [fileMgr contentsOfDirectoryAtPath:documentsDirectoryerror:&error]);
  35. 3、删除一个文件
  36. 
为了使这个技巧完整,让我们再一起看下如何删除一个文件:
//在filePath2中判断是否删除这个文件
if ([fileMgr removeItemAtPath:filePath2 error:&error] != YES)
NSLog(@"Unable to delete file: %@", [error localizedDescription]);
//显示文件目录的内容
NSLog(@"Documentsdirectory: %@",
[fileMgr contentsOfDirectoryAtPath:documentsDirectoryerror:&error]);
一旦文件被删除了,正如你所预料的那样,文件目录就会被自动清空:
  37. 这些示例能教你的,仅仅只是文件处理上的一些皮毛。想要获得更全面、详细的讲解,你就需要掌握NSFileManager文件的知识。
  38. 4、删除目录下所有文件
  39. //获取文件路径
- (NSString *)attchmentFolder{
  40. NSString *document = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
  41. NSString *path = [document stringByAppendingPathComponent:@"Attchments"];
  42. 
NSFileManager *manager = [NSFileManager defaultManager];
  43. 
if(![manager contentsOfDirectoryAtPath:path error:nil]){
  44. [manager createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:nil];
  45. }
  46. 
return path;
  47. }
  48. --清除附件
BOOL result = [[NSFileManager defaultManager] removeItemAtPath:[[MOPAppDelegate instance] attchmentFolder] error:nil];
  49. 5、获得文件的属性
-(void)getFileAttributes
{
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *path = @"/1ct.rtf";
NSDictionary *fileAttributes = [fileManager fileAttributesAtPath:path traverseLink:YES];
 NSLog(@"@@");
if (fileAttributes != nil) {
 NSNumber *fileSize;
 NSString *fileOwner, *creationDate;
 NSDate *fileModDate;
 //NSString *NSFileCreationDate
  50. //文件大小
 if (fileSize = [fileAttributes objectForKey:NSFileSize]) {
 NSLog(@"File size: %qin", [fileSize unsignedLongLongValue]);
 }
  51. //文件创建日期
 if (creationDate = [fileAttributes objectForKey:NSFileCreationDate]) {
 NSLog(@"File creationDate: %@n", creationDate);
 //textField.text=NSFileCreationDate;
 }
  52. //文件所有者
 if (fileOwner = [fileAttributes objectForKey:NSFileOwnerAccountName]) {
 NSLog(@"Owner: %@n", fileOwner);
 }
  53. //文件修改日期
 if (fileModDate = [fileAttributes objectForKey:NSFileModificationDate]) {
 NSLog(@"Modification date: %@n", fileModDate);
 }
 }
else {
 NSLog(@"Path (%@) is invalid.", path);
 }
}
  54. //日期格式化
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
  55. [dateFormatter setDateStyle:NSDateFormatterMediumStyle];
  56. [dateFormatter setTimeStyle:NSDateFormatterNoStyle];
  57. 
//数字格式化
  58. NSNumberFormatter *numberFormatter =[[NSNumberFormatter alloc] init];
  59. [numberFormatter setPositiveFormat: @"#,##0.## bytes"];
  60. //获取文件属性
  61. NSDictionary *fileAttributes =[[NSFileManager defaultManager] fileAttributesAtPath: directoryPath traverseLink: YES];
  62. //获取文件的创建日期
  63. NSDate *modificationDate = (NSDate*)[fileAttributes objectForKey: NSFileModificationDate];
  64. //获取文件的字节大小
  65. NSNumber *fileSize = (NSNumber*)[fileAttributes objectForKey: NSFileSize];
  66. 
//格式化文件大小
nsstring A = [numberFormatter stringFromNumber: fileSize];
  67. //格式化文件创建日期
  68. NSstring B =[dateFormatter stringFromDate: modificationDate];
  69. 
[numberFormatter release];
  70. [dateFormatter release];
  71. 6、读取文件内容操作
  72. - (void) loadFileContentsIntoTextView
  73. {
  74. //通过流打开一个文件
  75. NSInputStream *inputStream = [[NSInputStream alloc] initWithFileAtPath: filePath];
  76. [inputStream open];
  77. 
NSInteger maxLength = 128;
  78. uint8_t readBuffer [maxLength];
  79. //是否已经到结尾标识
  80. BOOL endOfStreamReached = NO;
  81. // NOTE: this tight loop will block until stream ends
  82. while (! endOfStreamReached)
  83. {
  84. NSInteger bytesRead = [inputStream read: readBuffer maxLength:maxLength];
  85. if (bytesRead == 0)
  86. {//文件读取到最后
  87. endOfStreamReached = YES;
  88. }
  89. else if (bytesRead == -1)
  90. {//文件读取错误
  91. endOfStreamReached = YES;
  92. }
  93. else
  94. {
  95. NSString *readBufferString =[[NSString alloc] initWithBytesNoCopy: readBuffer length: bytesRead encoding: NSUTF8StringEncoding freeWhenDone: NO];
  96. //将字符不段的加载到视图
  97. [self appendTextToView: readBufferString];
  98. [readBufferString release];
  99. }
  100. }
  101. [inputStream close];
  102. [inputStream release];
  103. }

文章来源: zzzili.blog.csdn.net,作者:清雨小竹,版权归原作者所有,如需转载,请联系作者。

原文链接:zzzili.blog.csdn.net/article/details/8265595

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。