NSFileHandle & NSFileManager 文件创建及写入例程

来源:互联网 发布:淘宝分销平台系统 编辑:程序博客网 时间:2024/06/16 05:34

/*

 * 例程说明:

 * 创建一个Date.text文件,获取当前的日期,将日期格式为“2013/08/12 22:50:00”的形式。

 * 然后以一秒记录一次,将新的时间存入到文件中。

 */

 


/*

 * 新建 WriteDate.h 文件及 WriteDate 类声明

 */


#import <Foundation/Foundation.h>


@interface WriteDate :NSObject

- (void) runWrite;

@end


/*

 * 新建 WriteDate.m 文件及 WriteDate 类实现

 */

#import "WriteDate.h"


@implementation WriteDate


- (void) runWrite {

    

    //创建文件管理对象

    NSFileManager *fileManager = [NSFileManagerdefaultManager];

    // 获取当前用户 路径 /Users/xxh

   NSString *path = NSHomeDirectory();

    // 文件路径

    NSString *filePath = [pathstringByAppendingPathComponent:@"Desktop/Date.text"];

    // 新建文件

   BOOL success = [fileManager createFileAtPath:filePath contents:nilattributes:nil];

   if (success) {

        NSLog(@"create success!");

    }

    

    // 文件写操作对象

   NSFileHandle *fileHandle = [NSFileHandlefileHandleForWritingAtPath:filePath];


    // 创建定时器

    [NSTimerscheduledTimerWithTimeInterval:1target:selfselector:@selector(timerAction:)userInfo:fileHandle repeats:YES];

}


- (void) timerAction:(NSTimer *)timer {

   NSFileHandle *fileHandle = timer.userInfo;

    //文件指针移动到文件未尾

    [fileHandleseekToEndOfFile];

    

    // 限制关闭条件

   static int n =1; // 10后关闭定时器

    

    // 获取当前时间

   NSDate *nowDate = [NSDatedate];

    // 时间格式化

    NSDateFormatter *dateFormater = [[NSDateFormatteralloc] init];

    [dateFormater setDateFormat:@"YYYY/MM/DD HH:mm:ss"];

    // 返回时间字符串

   NSString *dateString = [dateFormater stringFromDate:nowDate];

    // 添加换行符

    dateString = [dateStringstringByAppendingString:@"\n"];

    //通过数据编码 转换成数据对象

    NSData *data = [dateStringdataUsingEncoding:NSUTF8StringEncoding];

    // 写入文件

    [fileHandlewriteData:data];

    

   if (n == 10) {

        [timerinvalidate];     //关闭定时间

        [fileHandlecloseFile]; // 关闭文件句柄

    }

    n++;

    

}


@end


/*

 * main 方法

 */

#import <Foundation/Foundation.h>

#include "WriteDate.h"


int main(int argc,const char * argv[])

{


    @autoreleasepool {

        

       WriteDate *writeDate = [[WriteDatealloc] init];

        [writeDaterunWrite];

    }


    [[NSRunLoopcurrentRunLoop] run];

    

   return 0;

}



原创粉丝点击