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

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

      1、文件的创建
      -(IBAction) CreateFile
      {
      //对于错误信息
      NSError *error;
      // 创建文件管理器
      NSFileManager *fileMgr = [NSFileManager defaultManager];
      //指向文件目录
      NSString *documentsDirectory= [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];//创建一个目录
      [[NSFileManager defaultManager]   createDirectoryAtPath: [NSString stringWithFormat:@"%@/myFolder", NSHomeDirectory()] attributes:nil];// File we want to create in the documents directory我们想要创建的文件将会出现在文件目录中
      // Result is: /Documents/file1.txt结果为:/Documents/file1.txt
      NSString *filePath= [documentsDirectory
      stringByAppendingPathComponent:@"file2.txt"];
      //需要写入的字符串
      NSString *str= @"iPhoneDeveloper Tipsnhttp://iPhoneDevelopTips,com";
      //写入文件
      [str writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];
      //显示文件目录的内容
      NSLog(@"Documentsdirectory: contentsOfDirectoryAtPath:documentsDirectory error:&error]);}
      2、对文件重命名
      对一个文件重命名
      想要重命名一个文件,我们需要把文件移到一个新的路径下。下面的代码创建了我们所期望的目标文件的路径,然后请求移动文件以及在移动之后显示文件目录。
      //通过移动该文件对文件重命名
      NSString *filePath2= [documentsDirectory
      stringByAppendingPathComponent:@"file2.txt"];
      //判断是否移动
      if ([fileMgr moveItemAtPath:filePath toPath:filePath2 error:&error] != YES)
      NSLog(@"Unable to move file: %@", [error localizedDescription]);
      //显示文件目录的内容
      NSLog(@"Documentsdirectory: %@",
      [fileMgr contentsOfDirectoryAtPath:documentsDirectoryerror:&error]);
      3、删除一个文件
      
为了使这个技巧完整,让我们再一起看下如何删除一个文件:
//在filePath2中判断是否删除这个文件
if ([fileMgr removeItemAtPath:filePath2 error:&error] != YES)
NSLog(@"Unable to delete file: %@", [error localizedDescription]);
//显示文件目录的内容
NSLog(@"Documentsdirectory: %@",
[fileMgr contentsOfDirectoryAtPath:documentsDirectoryerror:&error]);
一旦文件被删除了,正如你所预料的那样,文件目录就会被自动清空:
      这些示例能教你的,仅仅只是文件处理上的一些皮毛。想要获得更全面、详细的讲解,你就需要掌握NSFileManager文件的知识。
      4、删除目录下所有文件
      //获取文件路径
- (NSString *)attchmentFolder{
      NSString *document = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
      NSString *path = [document stringByAppendingPathComponent:@"Attchments"];
      
NSFileManager *manager = [NSFileManager defaultManager];if(![manager contentsOfDirectoryAtPath:path error:nil]){
      [manager createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:nil];
      }return path;
      }
      --清除附件
BOOL result = [[NSFileManager defaultManager] removeItemAtPath:[[MOPAppDelegate instance] attchmentFolder] error:nil];
      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
       //文件大小
 if (fileSize = [fileAttributes objectForKey:NSFileSize]) {
 NSLog(@"File size: %qin", [fileSize unsignedLongLongValue]);
 }
       //文件创建日期
 if (creationDate = [fileAttributes objectForKey:NSFileCreationDate]) {
 NSLog(@"File creationDate: %@n", creationDate);
 //textField.text=NSFileCreationDate;
 }
       //文件所有者
 if (fileOwner = [fileAttributes objectForKey:NSFileOwnerAccountName]) {
 NSLog(@"Owner: %@n", fileOwner);
 }
       //文件修改日期
 if (fileModDate = [fileAttributes objectForKey:NSFileModificationDate]) {
 NSLog(@"Modification date: %@n", fileModDate);
 }
 }
else {
 NSLog(@"Path (%@) is invalid.", path);
 }
}
      //日期格式化
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
      [dateFormatter setDateStyle:NSDateFormatterMediumStyle];
      [dateFormatter setTimeStyle:NSDateFormatterNoStyle];//数字格式化
      NSNumberFormatter *numberFormatter =[[NSNumberFormatter alloc] init];
      [numberFormatter setPositiveFormat: @"#,##0.## bytes"];
      //获取文件属性
      NSDictionary *fileAttributes =[[NSFileManager defaultManager] fileAttributesAtPath: directoryPath traverseLink: YES];
      //获取文件的创建日期
      NSDate *modificationDate = (NSDate*)[fileAttributes objectForKey: NSFileModificationDate];
      //获取文件的字节大小
      NSNumber *fileSize = (NSNumber*)[fileAttributes objectForKey: NSFileSize];//格式化文件大小
nsstring A = [numberFormatter stringFromNumber: fileSize];
      //格式化文件创建日期
      NSstring B =[dateFormatter stringFromDate: modificationDate];[numberFormatter release];
      [dateFormatter release];
      6、读取文件内容操作
      - (void) loadFileContentsIntoTextView
      {
      //通过流打开一个文件
      NSInputStream *inputStream = [[NSInputStream alloc] initWithFileAtPath: filePath];
      [inputStream open];
      
NSInteger maxLength = 128;
      uint8_t readBuffer [maxLength];
      //是否已经到结尾标识
      BOOL endOfStreamReached = NO;
      // NOTE: this tight loop will block until stream ends
      while (! endOfStreamReached)
      {
      NSInteger bytesRead = [inputStream read: readBuffer maxLength:maxLength];
      if (bytesRead == 0)
      {//文件读取到最后
      endOfStreamReached = YES;
      }
      else if (bytesRead == -1)
      {//文件读取错误
      endOfStreamReached = YES;
      }
      else
      {
      NSString *readBufferString =[[NSString alloc] initWithBytesNoCopy: readBuffer length: bytesRead encoding: NSUTF8StringEncoding freeWhenDone: NO];
      //将字符不段的加载到视图
      [self appendTextToView: readBufferString];
      [readBufferString release];
      }
      }
      [inputStream close];
      [inputStream release];
      }
  
 

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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