iOS 文件操作

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

 

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];

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番薯大佬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值