`
cgp681ws
  • 浏览: 18546 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

IOS中NSFileManager的操作 [Z]

 
阅读更多

IOS中NSFileManager的操作 [Z]
2011年11月09日
  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 Tips\nhttp://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(NSDocumentDir ectory, 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];
  IPhone中获取文件各项属性方法
  -(NSData *)applicationDataFromFile:(NSString *)fileName
  {
  NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDir ectory, NSUserDomainMask,YES);
  NSString *documentsDirectory =[paths objectAtIndex:0];
  NSString *appFile =[documentsDirectory stringByAppendingPathComponent:fileName];
  NSData *data =[[[NSData alloc]initWithContentsOfFile:appFile]autorelease];
  return data;
  } -(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: %qi\n", [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);
  }
  }
  ///////////////////
  文件类型,文件缩略图呢???
  ============================
  //获取当前应用程序的主目录
  NSString directoryPath =NSHomeDirectory();
  //获取当前目录下的所有文件
  NSArray directoryContents = [[NSFileManager defaultManager] directoryContentsAtPath: directoryPath];
  //获取一个文件或文件夹
  NSString *selectedFile = (NSString*)[directoryContents objectAtIndex: indexPath.row];
  //拼成一个完整路径
  [directoryPath stringByAppendingPathComponent: selectedFile];
  BOOL isDir;
  //判断是否是为目录
  if ([[NSFileManager defaultManager] fileExistsAtPath:selectedPath isDirectory:&isDir] && isDir)
  {//目录
  }
  else
  {//文件
  }
  //日期格式化
  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];
  //读取文件内容操作
  - (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];
  }
  异步文件读取  在网络方面,网络的不可靠性可能会造成上面方法的阻塞
  nsstream是可以异步工作的。可以注册一个在流中有字节可读的时候回调的函数,如果没有可读的,就不要阻塞住
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics